我正在一台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个进程。我的问题是,在Windows 10上运行代码时,我会得到4个Python进程,但它们使用0%的CPU,并且不会输出任何内容,而Windows 7 PC则会在所有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
project
简单地设置为打印其传递的文件名,并且没有出现任何问题。也许问题在其他地方(可能是在project
的内容或者在主要代码中生成filenamelist
的方式)? - Blckknghtproject
中没有任何问题,因为我可以在不使用多进程的情况下运行代码,然后它就可以正常工作。你可能对filenamelist
有所发现,因为这是使用多进程和正常运行之间唯一的区别。我将编辑我的帖子以显示生成filenamelist
的方法。 - adam bproject
在 Windows 10 + 多进程中是否会被执行?添加一些日志记录... 长期以来:在 Windows 10 上,python.exe 目录名称包含一些空格/奇怪字符,这会导致无法正确运行。 - Udi