Python并发尝试导入函数的功能

所以我有2个.py文件,并试图将测试功能从第一个导入到secon一个。但是每次尝试时,我都会得到一个“ BrokenProcesspool:进程池中的进程在将来运行或挂起时突然终止。”错误。我不知道我在搞什么帮忙,非常感谢

parallel.py:

import time
from concurrent import futures


def test(t):
    time.sleep(t)
    print("Ich habe {} Sekunden gewartet. Zeit {:.0f}".format(t,time.time()))



def main():
    print("Startzeit:                         {:.0f}".format(time.time()))
    start = time.perf_counter()
    with futures.ThreadPoolExecutor(max_workers=3) as ex:
        ex.submit(test,9)
        ex.submit(test,4)
        ex.submit(test,5)
        ex.submit(test,6)

        print("Alle Aufgaben gestartet.")

    print("Alle Aufgaben erledigt.")

    finish = time.perf_counter()

    print("Fertig in ",round(finish-start,2)," seconds(s)")


 
if __name__ == "__main__":
    main()
    

parallel2.py:

import parallel
import time
import concurrent.futures

# =============================================================================
# def test(t):
#     time.sleep(t)
#     return ("Ich habe {} Sekunden gewartet. Zeit {:.0f}".format(t,time.time()))
# =============================================================================

def main():  
    print("Startzeit:                         {:.0f}".format(time.time()))

    start = time.perf_counter()
    
    with concurrent.futures.ProcesspoolExecutor() as executor:
        f1 = executor.submit(parallel.test,9)
        f2 = executor.submit(parallel.test,5)
        f3 = executor.submit(parallel.test,4)
        f4 = executor.submit(parallel.test,6)
        print(f1.result())
        print(f2.result())
        print(f3.result())
        print(f4.result())
 
    finish = time.perf_counter()

    print("Fertig in "," seconds(s)")    
    
if __name__ =="__main__":
    main()
iCMS 回答:Python并发尝试导入函数的功能

测试该解决方案:

从parallel.py中删除条件if __name__ == "__main__"

您将条件放在两个脚本中:if __name__ == "__main__"以执行主要功能。

执行此操作时,脚本将检查它是否是主模块,并仅在返回为true时才执行功能。

当您导入另一个脚本时,您的模块不再是“ __main__”,因此返回值不满足函数运行所施加的条件。

本文链接:https://www.f2er.com/1996920.html

大家都在问