我有以下功能:
def copy_file(source_file, target_dir):
pass
Run Code Online (Sandbox Code Playgroud)
现在我想用来立即multiprocessing执行这个功能:
p = Pool(12)
p.map(lambda x: copy_file(x,target_dir), file_list)
Run Code Online (Sandbox Code Playgroud)
问题是,lambda不能被腌制,所以这就失败了.解决这个问题最简洁(pythonic)的方法是什么?
我无法在这里实现这个建议:同时将两个函数应用于两个列表.
我想这是因为模块是由另一个模块导入的,因此我的Windows会生成多个python进程?
我的问题是:如果没有if,我怎么能使用下面的代码 if __name__ == "__main__":
args_m = [(mortality_men, my_agents, graveyard, families, firms, year, agent) for agent in males]
args_f = [(mortality_women, fertility, year, families, my_agents, graveyard, firms, agent) for agent in females]
with mp.Pool(processes=(mp.cpu_count() - 1)) as p:
p.map_async(process_males, args_m)
p.map_async(process_females, args_f)
Run Code Online (Sandbox Code Playgroud)
这两个process_males和process_females是fuctions.
args_m, args_f是迭代器
另外,我不需要退货.代理是需要更新的类实例.