我正在开发一个自动化框架,用于我们团队正在进行的一些测试。我们遇到了这个Pickling错误,经过一些研究后,我遇到了许多解决方案,并查看了随附的github页面:
我安装了悲刀,并且相信我已经正确实现了它,但我仍然遇到了Pickling错误。以下是示例代码和回溯:
import multiprocess
collect_host = 'test_host'
collect_name = 'test_collect'
username = 'user'
start_func = test_start_callback(perf_collect=collect_name,
perf_user=username,
perf_host=collect_host,
password= password)
dpool = multiprocess.Pool(1)
args = ('', '')
worker_results = []
worker = dpool.apply_async(start_func, args)
worker_results.append(worker)
dpool.close()
dpool.join()
for result in worker_results:
result.wait()
r = result.get()
assert r, 'No results returned'
test_start_callback是一个工厂函数,用于生成不带参数的函数。我编辑了未使用的代码段。
def test_start_callback(dim_collect_host=None, dim_collect_user=None,
perf_host=None, perf_user=None, perf_collect=None,
password=None, tpcc_filename=None):
if perf_host and perf_user and perf_collect:
def perf_test_start():
from <internal> import PerfmonManager
perf = PerfmonManager(host=perf_host,
username=perf_user,
password=password,
collect_name=perf_collect)
perf.start_collect()
return perf_test_start
我错过了其他SO链接中没有提到的内容,或者我传递此功能的方式也不受悲情支持。
答案 0 :(得分:0)
我是pathos
和multiprocess
作者。这是一个最近已知的问题,我不确定它的起源......它在过去的一个月里显然没有改变代码。我正在积极地追踪问题的根源。它似乎只影响python 2.7
。
请参阅:https://github.com/uqfoundation/pathos/issues/121
UPDATE :如果这与上面引用的问题相同,那么您需要做的就是清除multiprocess
的旧版本(鸡蛋等)并重建。这似乎是这样做的。有关更多信息,请参阅上面的URL。