From 22ebe5d2d66a8a144b088a50d20c995e050191ce Mon Sep 17 00:00:00 2001 From: luanhailiang Date: Fri, 22 Sep 2023 13:59:08 +0800 Subject: [PATCH] threading --- app.py | 32 +++++++++++++++++++++++++------- show.py | 2 +- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app.py b/app.py index cce2c75..a6c9cb6 100644 --- a/app.py +++ b/app.py @@ -2,6 +2,7 @@ import cv2 import json import time import requests +import threading import numpy as np import supervision as sv @@ -69,7 +70,10 @@ def worker(id,source,region=None,stream=False): if not cap.isOpened(): print("Error opening video stream.") while True: + use = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + bgn = (time.time()*1000) ret, frame = cap.read() + use += " read:"+str((time.time()*1000) - bgn) if not ret: print("Error read video stream.") cap = cv2.VideoCapture(source) @@ -85,6 +89,7 @@ def worker(id,source,region=None,stream=False): break continue result = model.track(frame,show=False,stream=False,persist=True,device=int(id)%4) + use += " track:"+str((time.time()*1000) - bgn) del(ret) del(frame) result = result[0] @@ -114,6 +119,7 @@ def worker(id,source,region=None,stream=False): balls[name] = ball names[name] = True names = {} + use += " names:"+str((time.time()*1000) - bgn) if count < region: continue data = {"table":id,"balls":balls,"time":int(time.time()*1000)} @@ -121,10 +127,13 @@ def worker(id,source,region=None,stream=False): json_data = json.dumps(data) balls = {} count = 0 + use += " dump:"+str((time.time()*1000) - bgn) if not stream: yield json_data else: yield f"data: {json_data}\n\n" + use += " yield:"+str((time.time()*1000) - bgn) + print(use) except GeneratorExit: print("Client disconnected at", time.ctime()) @@ -134,21 +143,30 @@ def workerloop(stop_event,id,source,target=None,region=None): try: gen = worker(id,source,region) for data in gen: + use = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + bgn = (time.time()*1000) if stop_event.is_set(): break json_data = json.loads(data) - # 设置请求头 - headers = { - "Content-Type": "application/json" - } + use += " loads:"+str((time.time()*1000) - bgn) text = json.dumps({"content":json_data}) - # print(text) - response = requests.post(target, data=text, headers=headers) + use += " dumps:"+str((time.time()*1000) - bgn) - # print(response.text) + # 创建并启动线程 + thread = threading.Thread(target=post_request, args=(target, text)) + thread.start() + + use += " post:"+str((time.time()*1000) - bgn) + print("gen",use) finally: gen.close() +def post_request(url, data): + headers = { + "Content-Type": "application/json" + } + response = requests.post(url, data=data,headers=headers) + print(response.text) if __name__ == '__main__': app.run("0.0.0.0",threaded=True) diff --git a/show.py b/show.py index 5a5e758..320a539 100644 --- a/show.py +++ b/show.py @@ -27,4 +27,4 @@ def show(): if __name__ == '__main__': app.logger.setLevel(logging.ERROR) - app.run("0.0.0.0",threaded=True) + app.run("0.0.0.0",port=8000,threaded=True)