[英]python multiprocess pinning
我目前正在使用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
以便每个进程都有更多可以咀嚼的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.