Windows 10上的Python多处理

ada*_*m b 8 python cpu-usage multiprocessing python-multiprocessing windows-10

我在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
Run Code Online (Sandbox Code Playgroud)

两台计算机都是双核/ 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
Run Code Online (Sandbox Code Playgroud)

Nam*_*ame 2

有类似的问题。正如我发现的,这只是我的情况下 python 中的一个错误: https ://bugs.python.org/issue35797

通过venv使用多处理时会发生这种情况。

Bugfix 在 Python 3.7.3 中发布。