从Python同时运行多个命令

4 投票
3 回答
21180 浏览
提问于 2025-04-15 15:28

我想从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() 方法来判断这些子程序什么时候完成。

撰写回答