我有一个程序,我需要使用不同的值调用超过100次。
我想同时做,不等待一个电话完成,然后重新开始。
我怎样才能实现它?
多线程解决方案。
我正在使用python。
答案 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)。