Pythons 多处理的池什么都不做



我编写了以下辅助功能以并行运行任意功能。

import multiprocessing

def runParallel(fns=[], args=[]):
    print('Starting multiprocessing with %i cores' % (multiprocessing.cpu_count() - 1))
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count() - 1)
    for fn, arg in zip(fns, args):
        pool.apply_async(fn, (arg,))
    pool.close()
    pool.join()

我用itertools.repeat呼叫函数和文件名列表

调用该函数。
runParallel(itertools.repeat(self.processFile), fileNamesAndPaths)

ProcessFile是具有签名的分类

def processFile(self, filename):

,然后以"打印"态度开始,从未执行。在输出"启动与3个内核"。

之后,该程序刚刚结束

使用多处理的过程一般可以起作用,但它用它无法处理的多种过程充斥着我的CPU,最终会冻结,但是至少该过程文件函数称为

from multiprocessing import Process

def runParallel(fns=[], args=[]):
    proc = []
    for fn, arg in zip(fns, args):
        p = Process(target=fn, args=(arg,))
        p.start()
        proc.append(p)
    for p in proc:
        p.join()

这就是为什么我想使用池的原因,因为从我的理解中,它可以在任何给定时间处理流程数量。

如果有帮助,我在64位Windows机器上使用2.7.10运行。

您可以用apply替换apply_async来查看错误输出。顺便说一句,它在python3中起作用,我不确定python2.7。

相关内容

  • 没有找到相关文章

最新更新