我想从python同时运行三个命令。命令格式为query.pl -args
目前我在做
os.system("query.pl -results '10000' -serverName 'server1' >> log1.txt")
os.system("query.pl -results '10000' -serverName 'server2' >> log2.txt")
os.system("query.pl -results '10000' -serverName 'server3' >> log3.txt")
我想同时查询所有三台服务器,但在这种情况下,每条命令只在最后一条服务器完成后执行。我怎样才能让它们同时出现?我在考虑使用'&'在最后,但我希望只有当所有三个命令完成
时才运行代码的下一部分答案 0 :(得分:10)
您可以使用subprocess模块并让所有三个模块独立运行:使用subprocess.Popen。注意正确设置“shell”参数。
使用wait()或poll()方法确定子进程何时完成。
答案 1 :(得分:0)
os.system("query.pl -results '10000' -serverName 'server1' &")
os.system("query.pl -results '10000' -serverName 'server2' &")
os.system("query.pl -results '10000' -serverName 'server3' &")
在这种情况下 - 进程将在后台启动
答案 2 :(得分:0)
您可以使用Queue
tasks = ("query.pl -results '10000' -serverName 'server1'",\
"query.pl -results '10000' -serverName 'server2'",\
"query.pl -results '10000' -serverName 'server1'")
def worker():
while True:
item = q.get()
os.system(item)
q = Queue()
for i in tasks:
t = Thread(target=worker)
t.setDaemon(True)
t.start()
for item in tasks:
q.put(item)
q.join()