Windows 10上的Python多处理

Windows 10上的Python多处理,python,multiprocessing,cpu-usage,windows-10,python-multiprocessing,Python,Multiprocessing,Cpu Usage,Windows 10,Python Multiprocessing,我正在Windows 7 pc和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 = [

我正在Windows 7 pc和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 pc不同,Windows 7 pc将在所有4个线程上充分运行,并且工作得很好

如果我不使用多处理,那么代码在Windows10笔记本电脑上运行良好,因此问题一定与此相关。使用Python进行多处理在Windows 10中还不能工作吗?顺便说一下,我正在两台机器上运行Python 2.7

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

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

[编辑]:我用来生成
文件名列表的方法如下所示,但是这在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中的一个bug:

通过venv使用多处理时发生


Bugfix是在Python 3.7.3中发布的。

您展示的多处理代码在使用Python 2.7.10的Windows 10上适用。我制作了
project
简单的
print
文件名,它被传递了,并且工作没有问题。可能问题出在其他地方(无论是在
project
的内容中,还是在主代码中生成
filenamelist
的方式中)?这似乎与
project
中的任何内容都无关,因为我可以在不使用多处理的情况下运行代码,这样就可以正常工作。不过,使用
filenamelist
可能是正确的,因为这是使用多处理运行和正常运行之间唯一的区别。我将编辑我的帖子,以展示生成
文件名列表的方法。您能否提供一个可以由任何人使用Windows 10运行的完整示例?是否在Windows 10+多处理中执行
project
?添加一些日志。。。。长镜头:python.exe目录名在windows 10上有一些空格/奇怪的字符,这会导致正确运行它时出现一些问题。