繁体   English   中英

我不能同时启动两个功能,多处理 Python。为什么?

[英]I can't start two functions at the same time, with multiprocessing Python. Why?

我只想同时启动 2 个功能,但它不起作用,这是我的代码:

from multiprocessing import Process
import time as t
def print1():
    print(1)
    t.sleep(10)

def print2():
    print(1)
    t.sleep(10)
if __name__ == '__main__':
    p1 = Process(target = print1)
    p1.start()
    p1.join()
    p2 = Process(target = print2)
    p2.start()
    p2.join()

我在控制台上没有任何问题,但 function 没有同时启动。 怎么了?

从这篇关于如何在 Python 中同时启动所有进程而不是

    p1 = Process(target = print1)
    p1.start()
    p1.join()
    p2 = Process(target = print2)
    p2.start()
    p2.join()

    p1 = Process(target = print1)
    p2 = Process(target = print2)
    p1.start()
    p2.start()
    p1.join()
    p2.join()

然后在它之后运行另一个 function,你可以这样做

    p1 = Process(target = print1)
    p2 = Process(target = print2)
    p3 = Process(target = print3)
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    p3.start()
    p3.join()

因为您正在使用.join() 根据文档

如果可选参数 timeout 为 None(默认值),则该方法会阻塞,直到调用其 join() 方法的进程终止。 如果超时为正数,则最多阻塞超时秒数。 请注意,如果其进程终止或方法超时,该方法将返回 None。 检查进程的退出代码以确定它是否终止。

因此,通过调用.join() ,您正在使进程阻塞直到它终止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM