我是多线程/处理方面的新手. 我已经用Python3创建了一个多线程应用程序.

  1. 线程1使用cv2从USB摄像头读取数据.
  2. 主线程处理此图像并返回经过后处理的图像.

我意识到主线程在同一图像帧上运行了3~4次. 我应该如何使主线程处理功能仅在来自USB摄像头的新图像帧上运行?我应该使用哪些方法/对象来启用它?

推荐答案

有几种方法可以做到这一点:

  • 使用队列.帧处理线程在队列上执行阻塞等待,而帧捕获线程将一条消息放到队列上,以告知帧已准备好.不需要将整个视频帧放在队列中,只需将索引放入帧列表中,这样在采集线程将下一帧读取到不同的缓冲区时,它就可以获取并处理它.
  • 使用多处理事件.

这两个 idea 都被很好地涵盖了here.

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

使用PANAS根据另两个列表中的值对一个列表中的字符串值进行分组

在Python代码中包含NAN值时,以两个矩阵计算RMSE

visual studio代码窗口中未激活虚拟环境11

为什么不能用格式字符串 '-' 绘制点?

在 python f-string 中使用 \u

Python:如何在Pandas 的 .agg 函数中使用 value_counts()?

Python Regex 查找给定字符串是否遵循交替元音、辅音或辅音、元音的连续模式

Einsum 对于张量乘法很慢

无法使用 Python 和 Selenium 检索 href 属性

如何在 django 中没有循环的情况下获得前键的前键?

Python从base64转换为二进制

在带有 M1 芯片(基于 ARM 的 Apple Silicon)的 Mac 上安装较早版本的 Python(3.8 之前)失败

django - 值更改后自动更新日期

如何在 Python 中计算两个包含字符串的列表的 Jaccard 相似度?

为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?

将 args、kwargs 传递给 run_in_executor

使用 python2 和 python3 创建一个 virtualenv

使用 urllib3 忽略证书验证

十六进制字符串到 Python 3.2 中的带符号整数?