从Python同时运行多个命令
我想从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")
我想同时查询三个服务器,但现在每个命令都是等上一个执行完才开始下一个。我该怎么才能让它们同时运行呢?我在想在命令后面加上 '&',但我希望只有在三个命令都执行完之后,代码的下一部分才开始运行。
3 个回答
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' &")
在这种情况下,程序会在后台启动。
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()
10
你可以使用 subprocess 模块,这样可以让三个程序独立运行:使用 subprocess.Popen。记得要正确设置 "shell" 这个参数。
可以用 wait() 或 poll() 方法来判断这些子程序什么时候完成。