【问题标题】:Running threads inside process在进程内运行线程
【发布时间】:2018-02-21 15:53:27
【问题描述】:

是否可以在函数内部运行线程(该函数将作为进程运行),如果有多少?

示例如下:

def process_one():
    def one():
        while True:
            print("one")
            time.sleep(1)

    def two():
        while True:
            print("two")
            time.sleep(1)

    def three():
        while True:
            print("three")
            time.sleep(1)

    a = Thread(target=one)
    b = Thread(target=two)
    c = Thread(target=three)
    a.start()
    b.start()
    c.start()


if __name__ == '__main__':
    p1 = Process(target=process_one)
    p1.start()

【问题讨论】:

    标签: multithreading python-3.x function multiprocessing


    【解决方案1】:

    是的,有可能。

    您甚至可以通过启动它并使用任务管理器/活动监视器/系统监视器来测试这个示例。您应该看到一个父进程和一个子进程。子进程应该启动了 3 个线程。

    至于可以启动多少线程的问题,真的要看你的用例是什么。

    给定示例的一些提示:

    1. 在此示例中,您必须至少在线程上使用join。如果不这样做,子进程会很快完成,
    2. 由于线程是在子进程中启动的,所以要注意线程生命周期的处理方式,
    3. 既然你可以杀死父进程,子进程会继续存在,所以这是另一件需要注意的事情。

    可能还有其他极端情况,但如果您决定使用进程和线程进行并发,您肯定必须对此进行彻底研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      相关资源
      最近更新 更多