【发布时间】:2019-10-03 01:53:01
【问题描述】:
我有以下 for 循环:
for j in range(len(a_nested_list_of_ints)):
arr_1_, arr_2_, arr_3_ = foo(a_nested_list_of_ints[j])
arr_1[j,:] = arr_1_.data.numpy()
arr_2[j,:] = arr_2_.data.numpy()
arr_3[j,:] = arr_3_.data.numpy()
a_nested_list_of_ints 是一个嵌套的整数列表。然而,它需要很多时间才能完成。如何通过多处理对其进行优化?到目前为止,我尝试使用multiprocessing
p = Pool(5)
for j in range(len(a_nested_list_of_ints)):
arr_1_, arr_2_, arr_3_ = p.map(foo,a_nested_list_of_ints[j])
arr_1[j,:] = arr_1_.data.numpy()
arr_2[j,:] = arr_2_.data.numpy()
arr_3[j,:] = arr_3_.data.numpy()
但是,我得到:
ValueError: not enough values to unpack (expected 3, got 2)
这里:
arr_1_, arr_2_, arr_3_ = p.map(foo,a_nested_list_of_ints[j])
知道如何使上述操作更快吗?我什至也尝试过使用星图,但它不起作用。
【问题讨论】:
-
最简单的答案是改进
foo的任何内容,但是由于您没有包含它,所以真的没办法说。在跳转到多处理之前优化函数可能是一个更好的主意。 -
尝试
x = p.map(...)并检查返回的x。显然,这不是您认为应该的 3 个对象。arr1,arr2,arr3=...解包非常无情,并没有提供太多调试帮助。
标签: python python-3.x numpy python-multiprocessing