繁体   English   中英

python多进程固定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM