【问题标题】:Why parallel for loop fails in python为什么并行for循环在python中失败
【发布时间】:2016-12-09 09:47:43
【问题描述】:

我想做一个for循环并行:

def multiple(a, b):
    return a * b
Parallel(n_jobs=2)(delayed(multiple)(a=i, b=j) for i in range(1, 6) for j in range(11, 16))

但它给了我一个错误信息:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Users/tiantian/Library/Python/2.7/lib/python/site-packages/joblib/parallel.py", line 758, in __call__
    while self.dispatch_one_batch(iterator):
  File "/Users/tiantian/Library/Python/2.7/lib/python/site-packages/joblib/parallel.py", line 603, in dispatch_one_batch
    tasks = BatchedCalls(itertools.islice(iterator, batch_size))
  File "/Users/tiantian/Library/Python/2.7/lib/python/site-packages/joblib/parallel.py", line 127, in __init__
    self.items = list(iterator_slice)
  File "<input>", line 1, in <genexpr>
  File "/Users/tiantian/Library/Python/2.7/lib/python/site-packages/joblib/parallel.py", line 183, in delayed
    pickle.dumps(function)
TypeError: expected string or Unicode object, NoneType found

代码有什么问题?

【问题讨论】:

    标签: python for-loop parallel-processing


    【解决方案1】:

    免责声明:我会发表评论,但没有足够的代表;/

    首先你应该清楚地提到你正在使用joblib

    其次,我在带有 python 2.7.12 和 3.5.2 的交互式解释器中使用 joblib==0.10.3 测试了这段代码 - 完美运行。

    joblib 测试您尝试使用的函数是否可以被腌制(只有 pickable 对象可以被多进程处理)时,您得到的错误被抛出,除了导入之外,这是完整的代码吗?你不是在路上的某个地方惹multiple吗?

    这也让我想起了一些在您使用交互式解释器时多处理无法正常工作的案例,如果您还没有将它写成脚本,也许?

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多