簡體   English   中英

如何同時運行多個python文件?

[英]How to run multiple python files at the same time?

如何同時運行多個python文件? 一共有3個文件:bot_1.py,bot_2.py,bot_3.py。 我想同時運行它們。 我附上了代碼。 為了使此腳本正常工作,我應該在worker函數中寫些什么? 我將不勝感激。

 import multiprocessing import subprocess def worker(file): #your subprocess code subprocess.Popen(['screen', './bot_1.py']) subprocess.Popen(['screen', './bot_2.py']) subprocess.Popen(['screen', './bot_3.py']) if __name__ == '__main__': files = ["bot_1.py","bot_2.py","bot_3.py"] for i in files: p = multiprocessing.Process(target=worker(i)) p.start() 

假設您的bot文件在命令行運行時執行了某些操作,我們可以通過將其導入到python進程(而不是shell)中來加載並執行它們。 當每個python文件定義一個包時,我們可以按照以下步驟進行操作:

import bot_1, bot_2, bot_3

但是,這將使它們一個接一個地運行,並且還會阻止您一次運行兩次。 為了使它們立即運行,我們可以按照您的建議使用多重處理:

import multiprocessing

for bot in ('bot_1', 'bot_2', 'bot_3'):
    p = multiprocessing.Process(target=lambda: __import__(bot))
    p.start()

進程需要一個函數來運行,因此我們使用匿名lambda為其賦予一個名字,然后動態導入該名稱。

它未在此處顯示,但是只要您不將模塊導入父進程中,子進程就會被迫加載它,這意味着您可以在單獨的進程中反復運行同一模塊。

從文檔開始,在多處理中,通過創建Process對象然后調用其start()方法來生成進程。

所以我想做到這一點的好方法是:

bots = ['bot1','bot2','bot3']
modules = map(__import__,bots)

import multiprocessing,subprocess

multiprocessing.Process(target=modules)

在bot1,2,3中,我使用了一個簡單的print(“ bot1”),bot2和bot3,其輸出是預期的:

user@machine:~$ python mainscript.py 
bot1
bot2
bot3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM