1
我試圖運行以下代碼段,它將數據附加到列表'tests1'和'tests2'。但是當我打印'tests1'和'tests2'時,顯示的列表是空的。這裏有什麼不正確的?並行化2 for循環時無法獲取值
tests1 = []
tests2 = []
def func1():
for i in range(25,26):
tests1.append(test_loader.get_tests(test_prefix=new_paths[i],tags=params.get('tags', None),
exclude=params.get('exclude', False)))
def func2():
for i in range(26,27):
tests2.append(test_loader.get_tests(test_prefix=new_paths[i],tags=params.get('tags', None),
exclude=params.get('exclude', False)))
p1 = mp.Process(target=func1)
p2 = mp.Process(target=func2)
p1.start()
p2.start()
p1.join()
p2.join()
print tests1
print tests2
像這樣工作會拋出此錯誤:Traceback(最近調用最後一次): 文件「/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py」,行268,in _feed send(obj) PicklingError:不能pickle:屬性查找__builtin __。instancemethod失敗 –
Aditya
@Aditya它通過酸洗和取消添加到隊列中的對象以在進程之間發送它們。 Pickle不接受功能。可能你可以傳回一個完整的對象而不是一個方法,但是不知道'test_loader.get_tests'的更多細節,我無法確定。在我的簡單示例中,如果您將整數包裝到類中併發回可用的類實例,但是如果您發回實例方法,它將失敗並出現類似的錯誤。 – aes