# main.py import asyncio from config import CAMERAS, TCP_SERVER, HTTP_SERVER, MODEL from tcp_client import AsyncTCPClient from http_client import AsyncHTTPClient from model_wrapper import ModelWrapper from camera_processor import CameraProcessor from global_logger import logger async def main(): logger.info("开始启动算法分析服务") loop = asyncio.get_running_loop() # 获取当前主线程的事件循环 tcp_client = AsyncTCPClient(TCP_SERVER["host"], TCP_SERVER["port"]) http_client = AsyncHTTPClient(HTTP_SERVER["url"], HTTP_SERVER["timeout"]) # 启动 TCP 和 HTTP 的发送任务 asyncio.create_task(tcp_client.send_loop()) asyncio.create_task(http_client.send_loop()) model_wrapper = ModelWrapper(MODEL["path"], MODEL["size"], MODEL["class_map"], MODEL["batch_size"]) # 为每个摄像头启动一个处理线程,并传入事件循环 for camera_config in CAMERAS: camera_thread = CameraProcessor(camera_config, model_wrapper, tcp_client, http_client, loop, MODEL["batch_size"]) camera_thread.start() while True: await asyncio.sleep(1) if __name__ == '__main__': asyncio.run(main())