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

时间:2018-06-12 15:23:21

标签: python python-3.x sockets python-multithreading

我在尝试了解如何使用线程模块时遇到了一些麻烦 在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)

提前感谢您的想法!

问候

1 个答案:

答案 0 :(得分:0)

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

在这个ThreadPool函数中,您可以使用特定参数添加要在线程中执行的函数。之后你可以启动Threadpool。

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

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

希望有所帮助