如何使用Python运行程序数百次?

时间:2011-12-01 22:07:56

标签: python multithreading

我有一个程序,我需要使用不同的值调用超过100次。

我想同时做,不等待一个电话完成,然后重新开始。

我怎样才能实现它?

多线程解决方案。

我正在使用python。

4 个答案:

答案 0 :(得分:3)

您可以使用subprocess模块执行此操作。下面是一个运行sleep命令一百次的示例,其睡眠值介于0到10秒之间。它将它们全部并行运行,然后在它们全部完成后退出。

import subprocess
import time

bin_path = 'sleep'
invocation_args = [[str(x*0.1)] for x in range(0,100)]

subprocs = []
for args in invocation_args:
    subprocs.append(subprocess.Popen([bin_path] + args))

while len(subprocs) > 0:
    subprocs = [p for p in subprocs if p.poll() is None]
    time.sleep(0.05)

print 'Finished running all subprocs'

答案 1 :(得分:0)

您可以尝试pyCUDA。它使用多线程并在NVIDIA的GPU上运行。

答案 2 :(得分:0)

正如评论所指出的,这实际上可能不是实现目标的最佳方式,具体取决于您的目标是什么。

但是,如果您决定以这种方式执行此操作,请查看Python的subprocess模块。您将需要直接使用Popen而不是像调用这样的便利函数,因为便利函数会等待被调用的进程结束。

或者,您可以将os.spawn与P_NOWAIT选项一起使用,但首选Popen。

答案 3 :(得分:0)

如果您需要进行某种压力/负载测试,可能现有的开源解决方案更合适,例如: jMeter(java)或TheGrinder(Jython中带脚本的Java)。