class ImageTypeImageFileUpload(Thread): | class ImageTypeImageFileUpload(Thread): | ||||
__slots__ = ('_fb_queue', '_context', '_image_queue', '_analyse_type', '_msg', 'ex') | |||||
__slots__ = ('_fb_queue', '_context', '_image_queue', '_analyse_type', '_msg') | |||||
def __init__(self, *args): | def __init__(self, *args): | ||||
super().__init__() | super().__init__() | ||||
self._fb_queue, self._context, self._msg, self._image_queue, self._analyse_type = args | self._fb_queue, self._context, self._msg, self._image_queue, self._analyse_type = args | ||||
self.ex = None | |||||
@staticmethod | @staticmethod | ||||
def handle_image(det_xywh, copy_frame, font_config): | def handle_image(det_xywh, copy_frame, font_config): | ||||
""" | """ | ||||
model_info = [] | model_info = [] | ||||
# 更加模型编码解析数据 | # 更加模型编码解析数据 | ||||
for code in list(det_xywh.keys()): | |||||
# 模型编号下面的检测目标对象 | |||||
det_info = det_xywh[code] | |||||
if len(det_info) > 0: | |||||
for cls in list(det_info.keys()): | |||||
target_list = det_info.get(cls) | |||||
if len(target_list) > 0: | |||||
for code, det_info in det_xywh.items(): | |||||
if det_info is not None and len(det_info) > 0: | |||||
for cls, target_list in det_info.items(): | |||||
if target_list is not None and len(target_list) > 0: | |||||
aiFrame = copy_frame.copy() | aiFrame = copy_frame.copy() | ||||
for target in target_list: | for target in target_list: | ||||
draw_painting_joint(target[1], aiFrame, target[3], target[2], target[4], font_config) | draw_painting_joint(target[1], aiFrame, target[3], target[2], target[4], font_config) | ||||
sleep(1) | sleep(1) | ||||
except Exception as e: | except Exception as e: | ||||
logger.error("图片上传异常:{}, requestId:{}", format_exc(), request_id) | logger.error("图片上传异常:{}, requestId:{}", format_exc(), request_id) | ||||
self.ex = e | |||||
finally: | finally: | ||||
clear_queue(image_queue) | clear_queue(image_queue) | ||||
logger.info("停止图片识别图片上传线程, requestId:{}", request_id) | logger.info("停止图片识别图片上传线程, requestId:{}", request_id) |
import os | import os | ||||
from concurrent.futures import ThreadPoolExecutor | from concurrent.futures import ThreadPoolExecutor | ||||
from os.path import join, exists, getsize | from os.path import join, exists, getsize | ||||
from profile import Profile | |||||
from time import time, sleep | from time import time, sleep | ||||
from traceback import format_exc | from traceback import format_exc | ||||
for r in task_list: | for r in task_list: | ||||
r.result(60) | r.result(60) | ||||
if image_thread and not image_thread.is_alive(): | if image_thread and not image_thread.is_alive(): | ||||
if image_thread.ex: | |||||
raise image_thread.ex | |||||
raise Exception("图片识别图片上传线程异常停止!!!") | raise Exception("图片识别图片上传线程异常停止!!!") | ||||
if image_thread and image_thread.is_alive(): | if image_thread and image_thread.is_alive(): | ||||
put_queue(image_queue, (2, 'stop'), timeout=2) | put_queue(image_queue, (2, 'stop'), timeout=2) |
# (modeType, model_param, allowedList, names, rainbows) | # (modeType, model_param, allowedList, names, rainbows) | ||||
MODEL_CONFIG2[code][2](frame_list[0].shape[1], frame_list[0].shape[0], | MODEL_CONFIG2[code][2](frame_list[0].shape[1], frame_list[0].shape[0], | ||||
model_conf) | model_conf) | ||||
if draw_config.get("font_config") is None: | |||||
draw_config["font_config"] = model_param['font_config'] | |||||
if draw_config.get(code) is None: | |||||
draw_config[code] = {} | |||||
draw_config[code]["allowedList"] = model_conf[2] | |||||
draw_config[code]["rainbows"] = model_conf[4] | |||||
draw_config[code]["label_arrays"] = model_param['label_arraylist'] | |||||
if draw_config.get("font_config") is None: | |||||
draw_config["font_config"] = model_param['font_config'] | |||||
if draw_config.get(code) is None: | |||||
draw_config[code] = {} | |||||
draw_config[code]["allowedList"] = model_conf[2] | |||||
draw_config[code]["rainbows"] = model_conf[4] | |||||
draw_config[code]["label_arrays"] = model_param['label_arraylist'] | |||||
# 多线程并发处理, 经过测试两个线程最优 | # 多线程并发处理, 经过测试两个线程最优 | ||||
det_array = [] | det_array = [] | ||||
for model in model_array: | for model in model_array: | ||||
for r in task_list: | for r in task_list: | ||||
r.result(timeout=60) | r.result(timeout=60) | ||||
if image_thread and not image_thread.is_alive(): | if image_thread and not image_thread.is_alive(): | ||||
if image_thread.ex: | |||||
raise image_thread.ex | |||||
raise Exception("图片识别图片上传线程异常停止!!!") | raise Exception("图片识别图片上传线程异常停止!!!") | ||||
if image_thread and image_thread.is_alive(): | if image_thread and image_thread.is_alive(): | ||||
put_queue(image_queue, (2, 'stop'), timeout=10, is_ex=True) | put_queue(image_queue, (2, 'stop'), timeout=10, is_ex=True) |
from service.Dispatcher import DispatcherService | from service.Dispatcher import DispatcherService | ||||
from util.LogUtils import init_log | from util.LogUtils import init_log | ||||
''' | ''' | ||||
dsp主程序入口 | dsp主程序入口 | ||||
''' | ''' |