Windows 10上的Python多处理

时间:2015-08-30 11:26:39

标签: python multiprocessing cpu-usage windows-10 python-multiprocessing

我在Windows 7和Windows 10笔记本电脑上都运行了一些代码:

def project(filename):
    **Do Something Here**


if __name__ == '__main__':
    pool = Pool(processes=4)
    results = [pool.apply_async(project, args=(filename,)) for filename in filenamelist]
    output = [p.get() for p in results]
    print output

两台计算机都是双核/ 4线程,所以它们都应该可以很好地运行4个进程。我遇到的问题是,当我在Windows 10上运行代码时,我会运行4个python进程,但是它们使用0%的cpu并且它们不会输出任何内容,这与Windows 7个数据库不同,它将全部运行4个线程和工作完美。

如果我不使用多处理,代码在Windows 10笔记本电脑上运行正常,所以问题必须与此相关。使用Python的多处理在Windows 10中不起作用吗?顺便说一句,我在两台机器上运行Python 2.7。

[编辑]:Windows 7 pc处理器是i5-650,Windows 10笔记本处理器是i3-2370M

[更新]:我将笔记本电脑恢复到Windows 8.1,完全相同的代码运行,这绝对是Windows 10的问题。

[编辑]:我用来生成filenamelist的方法如下,但这在Windows 7上运行正常。

def get_unfinished_files(indir, outdir):
    filenamelist = []
    for filename in os.listdir(indir):
        if filename not in os.listdir(outdir) and filename.endswith('.png'):
            filenamelist.append(filename)
    return filenamelist

1 个答案:

答案 0 :(得分:1)

有类似的问题。正如我发现的那样,在我看来,这只是python中的一个错误: https://bugs.python.org/issue35797

通过 venv 使用多重处理时会发生。

Bugfix在Python 3.7.3中发布。