我有以下for循环:
for j in range(len(list_list_int)):
arr_1_, arr_2_, arr_3_ = foo(bar, 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()
Run Code Online (Sandbox Code Playgroud)
我想将其应用于foo
多处理,主要是因为要花费大量时间才能完成。我尝试使用funcy的 chunks方法批量进行此操作:
for j in chunks(1000, list_list_int):
arr_1_, arr_2_, arr_3_ = foo(bar, 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()
Run Code Online (Sandbox Code Playgroud)
但是,我越来越list object cannot be interpreted as an integer
。使用多处理应用foo的正确方法是什么?
这是我正在使用的代码
import funcy
@funcy.memoize
class mystery(object):
def __init__(self, num):
self.num = num
feat = mystery(1)
with open('num.pickle', 'wb') as f:
pickle.dump(feat,f)
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
PicklingError: Can't pickle <class '__main__.mystery'>: it's not the
same object as __main__.mystery
Run Code Online (Sandbox Code Playgroud)
我希望1)理解为什么会这样,2)找到一个允许我挑选对象的解决方案(不删除memoization).理想情况下,解决方案不会改变对pickle的调用.
用funcy运行python 3.6 == 1.10
提前致谢!