1

我正在使用 joblib 并行处理 4 帧(从视频中获取的图像)。为此使用了并行 for 循环,其中每个循环为不同的帧调用相同的函数。由于捕获帧只占用总处理时间的 1%(通过使用 line profiler 的 python 脚本分析发现),我首先捕获 4 个帧并交给 joblib 进行多处理。

我发现使用笔记本电脑,这个过程大约加快了 5 倍。在 Rapberry pi-2(四核)上,观察到几乎 8 倍的加速,在 Beaglebone Black(非多核)上,也观察到几乎 7 倍的加速。那么,joblib 究竟是如何分配任务的呢?

4

1 回答 1

1

默认情况下, joblib.parallel使用 Pythonmultiprocessing模块来分叉不同的 Python 工作进程,以在不同的 CPU 上同时执行任务。

multiprocessing模块可以利用多个内核/处理器(它通过透明地启动多个进程来绕过 GIL)。它提供了一些类似于线程模块的原语。

整体效率取决于内核共享内存访问方式的微妙之处。

于 2015-05-02T20:21:58.323 回答