python多进程固定
发布时间:2020-12-20 13:24:10 所属栏目:Python 来源:网络整理
导读:我目前正在使用 python multiprocess来做一些简单的并行编程. 我使用异步装饰器 def async(decorated): module = getmodule(decorated) decorated.__name__ += '_original' setattr(module,decorated.__name__,decorated) def send(*args,**opts): return as
我目前正在使用
python multiprocess来做一些简单的并行编程.
我使用异步装饰器 def async(decorated): module = getmodule(decorated) decorated.__name__ += '_original' setattr(module,decorated.__name__,decorated) def send(*args,**opts): return async.pool.apply_async(decorated,args,opts) return send 然后 @async def evalfunc(uid,start,end): veckernel(Posx,Posy,Posz,Quant,Delta) return (uid,GridVal) def runit(outdir): async.pool = Pool(8) results = [] for uid in range(8): result = evalfunc(uid,Chunks[uid],Chunks[uid+1]) results.append(result) 如果我在8处理器或8核机器上运行它,它基本上只使用两个核心.这是为什么?有没有办法像pthreads一样做正确的核心固定? 非常感谢, 解决方法
如果apply_async(例如evalfunc)调用的函数很快完成,则可能无法使用池中的所有工作进程.
如果这确实是您的情况,那么您需要将更多数据传递给每次调用evalfunc,以便每个进程都有更多可以咀嚼的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |