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(

我目前正在使用python多进程来做一些简单的并行编程。 我使用异步装饰器

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
传递更多的数据,以便每个进程都有更多的内容需要考虑