基本设置:
我正在使用python脚本来自动测试我正在编写的编程项目。在测试中,我运行带有许多不同选项的可执行文件,并将结果与以前的运行进行比较。由于我有大约600k个不同的测试运行,所以测试需要很长时间。如何在Python中高效地运行大量的子进程?
目前,我已将脚本分成两部分,一个测试模块,用于从作业队列获取测试结果并将结果放入结果队列,另一个主要模块创建作业队列,以及然后检查结果。这使我可以使用几种测试过程/线程,这些测试过程/线程迄今为止在测试速度方面没有提供任何改进(我正在双核计算机上运行该测试过程,因此我希望更多的测试过程能够更好地在四核-核心)。
在测试模块,创建一个命令串,我然后执行使用
subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
然后我读从管的结果,并将其放置在结果队列。
问:
这是一个多核系统上运行很多很多的命令字符串的最有效的方法是什么?我所做的每一个Popen都会创建一个新的流程,这似乎可能会造成相当多的开销,但我真的无法想到一个更好的方法来实现它。
(我目前使用Python 2.7的情况下,此问题。)
编辑:
在Linux操作系统上
我产卵子过程是命令行C-可执行文件与参数。
是其他python程序的命令吗?命令行程序?混合包? – Andrew 2011-05-18 14:23:03
这是什么操作系统? – Macke 2011-05-18 14:24:37