如何在python 3中并发执行处理任务和套接字通信?



我在尝试了解如何使用线程模块时遇到了一些麻烦 在 Python 3 中。

起源:我写了一个python脚本来对每个图像进行一些处理 for 循环中相机流的帧。 因此,我编写了一些在主脚本中使用的函数。主脚本/循环未封装在函数中。

目标:我希望主循环一直运行。的结果 最新帧的处理必须仅发送到套接字客户端 如果客户端向服务器套接字发送请求。

我的想法是使用两个线程。一个用于图像处理,一个用于 侦听请求的服务器套接字采用最新映像 处理结果并将其发送到客户端套接字。 我看到了如何使用线程和理解的不同教程 一般的工作流程,但不是如何使用它来应对这个特定的 箱。所以我希望得到你的帮助。

下面是源脚本的粗略结构:

import cv2
import numpy
import json
import socket
from threading import Thread
def crop(image, coords):
...
def cont(image):
...
# load parameters
a = json_data["..."]
# init cam
camera = PiCamers()
# main loop
for frame in camera.capture_continuous(...):
#######
# some image processing
#######
result = (x, y, z)

提前感谢您的想法!

问候

基本上,你必须创建一个所谓的ThreadPool。

在此 ThreadPool 函数中,您可以添加要在线程中执行的函数及其特定参数。之后,您可以启动线程池。

https://www.codementor.io/lance/simple-parallelism-in-python-du107klle

这里使用了带有 .map 的 threadPool。还有更高级的功能可以完成这项工作。您可以阅读 ThreadPool 的纪录片或搜索其他教程。

希望它有帮助