簡體   English   中英

並行運行多個python文件

[英]Running multiple python files in parallel

以下是我的代碼。 它非常簡單直接,任務是同時運行三個文件。

當我運行它時,它只運行最后的進程(每個文件應該生成一個csv文件)。

import multiprocessing
import subprocess

def worker(file):
    subprocess.call(["python", file])


if __name__ == '__main__':
    files = ["launch_day_t1.py","launch_day_t2.py","launch_day_t3.py"]
    for i in files:
        p = multiprocessing.Process(target=worker(i))
        p.start()

如您所見,我希望運行三個文件(“launch_day_t1.py”,“launch_day_t2.py”和“launch_day_t3.py”)。

我的問題是,這是否是運行並行腳本的最佳方式(如果是),還是有更好的方法?

謝謝!

這里最好的情況是重構“launch_day_t1.py”中的代碼,以便你需要調用的部分被包裝到函數中,而cli代碼是if __name_=="__main__" 'd ......看起來像:

#launch_day_t1.py
def do_stuff():
    pass
def do_more_stuff():
    pass
if __name__ == "__main__":
    do_stuff()
    do_more_stuff()

然后,您可以導入所需的部件,而不是從命令行調用該文件,並從現有的python解釋器中調用它,這將使收集輸出變得更容易。

import multiprocessing
import subprocess
import launch_day_t1
import launch_day_t2

def worker(namespace):
    namespace.do_stuff()
    return namespace.do_more_stuff()


if __name__ == '__main__':
    N_CORES = 8
    files = [launch_day_t1, launch_day_t2]
    p = multiprocessing.Pool(2*N_CORES)
    print(p.map(worker, files))

暫無
暫無

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

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