0%

Python线程操作

1 多线程操作的基本原理

开发语言与系统架构无关,在学习使用C++的时候我们就接触过多线程编程,后面随着处理器多核的出现,有了并行编程,这两个还存在着很大的区别。

说一下我所理解的多线程编程

  1. 存在可以独立执行的Task
  2. Task之间的依赖关系是流式的(或者可以转变为流式)

举个人脸检测的例子

graph LR;
  视频流-->| 检测 |人脸信息;
  人脸信息-->| 后处理 |处理过的人脸信息;
  处理过的人脸信息-->| 显示 |上层回调;

在实际的操作中,我们可以把所有需要处理的视频流保存下来,然后传递给算法引擎,然后得到所有的人脸信息,然后对每一帧的人脸信息进行统一处理,然后再一帧帧返回结果。但这样做效率很低。
我们可以试着这么做,开一个线程A,用于获取视频帧;再开一个线程B,用于算法检测;再开一个线程C,用于回调显示。
这样做的好处是,我拿到一帧视频,放到buffer里(这里甚至可以设定双buffer)。

Multiple buffering

vsync