threading
parent
acfa96c3eb
commit
22ebe5d2d6
32
app.py
32
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)
|
||||
|
|
Loading…
Reference in New Issue