Python:可以交叉通信的多个线程

时间:2018-01-12 12:46:11

标签: python multithreading loops

我想运行两个独立的函数,它们以恒定的时间间隔循环,同时运行。

Function1需要每60秒循环一次。然后我想从Function1触发Function2的启动。然后,Function2每5秒循环一次。在某一点上,我想停止Function2。

Flow diagram

最佳解决方案是什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用multiprocessing.Process轻松完成此操作:

>

如果要同步两个进程,可以使用Lock

from multiprocessing import Process

def function1():
    # ... Initiate loop
    child_process = Process(target=function2)
    child_process.daemon = True # We want function2 to be terminated if function1 exits for some reason
    child_process.start()
    # ... Continue loop execution as normal
    # ... After some time
    child_process.terminate() # This will terminate function2
    # ...
    return

def function2():
    # ... Loop and do stuff
    return

function1()

使用这种方法,您可以保证打印语句永远不会并行执行,而是顺序执行

答案 1 :(得分:0)

您可以使用condition variable从一个线程向另一个线程发出信号。