繁体   English   中英

从python同时运行多个命令

[英]Running multiple commands simultaneously from 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")

我想同时查询所有三个服务器,但在这种情况下,每个命令只在最后一个完成后执行。 我怎样才能让它们同时出现? 我想在最后使用'&',但我希望只有当所有三个命令完成时才运行代码的下一部分

您可以使用子进程模块并使所有三个独立运行:使用subprocess.Popen。 注意正确设置“shell”参数。

使用wait()或poll()方法确定子进程何时完成。

os.system("query.pl -results '10000' -serverName 'server1' &") 
os.system("query.pl -results '10000' -serverName 'server2' &") 
os.system("query.pl -results '10000' -serverName 'server3' &")

在这种情况下 - 进程将在后台启动

您可以使用队列

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()   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM