簡體   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