【发布时间】:2018-11-20 12:23:45
【问题描述】:
cmd 是一个处理参数 x 的函数,将输出打印到标准输出。例如,它可能是
def cmd(x):
print(x)
调用cmd() 的串行程序如下所示。
for x in array:
cmd(x)
为了加快程序速度,我希望它并行运行。 stdout 输出可以是无序的,但单个 x 的输出不能被另一个 x 的输出破坏。
在 python 中可以有多种实现方式。我想出类似的东西。
from joblib import Parallel, delayed
Parallel(n_jobs=100)(delayed(cmd)(i) for i in range(100))
就代码的简单性/可读性和效率而言,这是在 python 中实现这一点的最佳方式吗?
另外,上面的代码在 python3 上运行正常。但不是在python2上,我收到以下错误。是不是可能导致错误的问题?
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/joblib/externals/loky/backend/semlock.py:217:RuntimeWarning:信号量在 OSX 上被破坏,发布可能增加其最大值 “增加其最大值”,RuntimeWarning)
谢谢。
【问题讨论】:
-
我修复了原始消息中的错误。
标签: python multithreading python-2.7 parallel-processing joblib