开发实例

继续执行主线程 #

from concurrent.futures import ThreadPoolExecutor

# 使用 ThreadPoolExecutor 创建线程池
executor = ThreadPoolExecutor(max_workers=len(models) + 1)

# 提交生产者任务到线程池
executor.submit(
    DetectionService._producer_frames,
    read_data,
    mode,
    interval_seconds,
    start_time,
    end_time,
    queue_manager
)

# 提交消费者任务到线程池
for key, value in CV_MODEL.items():
    with queue_manager.lock:
        q = queue_manager.queues.get(key)
    executor.submit(
        DetectionService._consumer_frames,
        q, mode, diff, name, key, value
    )

主线程等待 #

from concurrent.futures import ThreadPoolExecutor

# 使用 ThreadPoolExecutor 创建线程池,并设置最大工作线程数为 4
with ThreadPoolExecutor(max_workers=4) as executor:
    # 提交生产者任务到线程池
    executor.submit(
        DetectionService._producer_frames,
        read_data,
        mode,
        interval_seconds,
        start_time,
        end_time,
        queue_manager
    )
    
    # 提交消费者任务到线程池
    for key, value in CV_MODEL.items():
        with queue_manager.lock:
            q = queue_manager.queues.get(key)
        executor.submit(
            DetectionService._consumer_frames,
            q, mode, diff, name, key, value
        )