我正在尝试将我的脚本从使用线程转换为更酷的多处理(使用 python 3.2 和concurrent.futures
,但是这段代码崩溃了
with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
for result in executor.map(lambda h:
validate_hostname(h, pci_ids, options.verbose),
get_all_hostnames()):
我得到错误_pickle.PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed
。阅读此答案时,我认为问题在于不可能将 lambda 函数作为参数,executor.map()
并且为了使executor.map()
我需要开发一个单参数函数,但是这些pci_ids
和options.verbose
是可变的,因此我无法将它们指定为固定帮助函数中的值。
有什么想法该怎么做?