【发布时间】:2020-12-31 12:10:57
【问题描述】:
我正在学习使用 Python 3.8.2 进行线程化。我有一个带有无限循环的函数,然后还有两个使用 threading.Timer 类的函数。
def x:
while True:
dosomething()
def f1():
dosomething2()
threading.Timer(60,f1).start()
def f2():
dosomething3()
threading.Timer(100,f2).start()
然后我启动三个线程:
t1 = threading.Thread(target=x)
t2 = threading.Thread(target=f1)
t3 = threading.Thread(target=f2)
当需要执行 f1 或 f2 时,我不希望 x() 同时执行(它们可能使用相同的资源)并暂停,让 f2 或 f1 完成,然后然后在 x() 中恢复无限循环。我该怎么做?
我看过 join() 但在我看来它会永远等待 f1() 和 f2() 因为它每次都会创建一个新线程并且不会终止。
这是一张解释流程的照片:
【问题讨论】:
标签: python multithreading