加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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,以便每个进程都有更多可以咀嚼的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读