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