python多重处理不断产生整个脚本

问题描述 投票:0回答:1

我在组织脚本使用多重处理时遇到麻烦。似乎已经产生了进程,但是它一次又一次地执行整个脚本。在此示例中,它将持续print("PREPARATION")。我认为我的问题与脚本的组织有关。

import subprocess as sp
import multiprocessing


def func1():
   blah
   blah
   blah

def func2():
   blah
   blah
   blah

def derev_work(cmd):
    proc = sp.run(cmd)
    print(proc.stdout)

def main():

    print("PREPARATION")
    cmd_list = [[path_to_exe, arg1, arg2, arg3] for sheet in sortedsheets]

    if __name__=="__main__":
        print (multiprocessing.cpu_count())
        pool = multiprocessing.Pool(multiprocessing.cpu_count())

        results = []
        r = pool.map_async(derev_work, cmd_list , callback=results.append)
        r.wait()
        print(results)

    print("COMPLETION")

main()
python multiprocessing subprocess
1个回答
1
投票

您将需要使用

if __name__ == "__main__":
   main()

成语

[multiprocessing docs中有非常清楚的解释:

相反,应该通过如下使用if __name__ == '__main__':来保护程序的“入口点”。

© www.soinside.com 2019 - 2024. All rights reserved.