Windows 10上的Python多处理

问题描述 投票:8回答:1

我在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
python multiprocessing cpu-usage windows-10 python-multiprocessing
1个回答
2
投票

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

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

Bugfix在Python 3.7.3中发布。

© www.soinside.com 2019 - 2024. All rights reserved.