python多进程固定
我目前正在使用python多进程来做一些简单的并行编程。 我使用异步装饰器python多进程固定,python,concurrency,numpy,multiprocessing,Python,Concurrency,Numpy,Multiprocessing,我目前正在使用python多进程来做一些简单的并行编程。 我使用异步装饰器 def async(decorated): module = getmodule(decorated) decorated.__name__ += '_original' setattr(module, decorated.__name__, decorated) def send(*args, **opts): return async.pool.apply_async(
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
传递更多的数据,以便每个进程都有更多的内容需要考虑