首页 > 解决方案 > 停止运行函数并再次调用它

问题描述

我希望 go() 在调用函数 main 时连续运行。当再次调用函数 main 时,我希望 go() 通过停止执行并重新启动它来“重置”。例如:

from threading import Thread
import time
def main():
     global run
     if run==True:
         running=False
         run=False
     def go():
         i=0
         global run
         run=True
         while running:
             print(i+=1) 
             time.sleep(1)
     t = Thread(target = go)
     running=True
     t.start()


run=False
main()
time.sleep(3)
main()

这是代码连续打印 0-infinity 的示例。当再次调用函数 main 时,我想停止执行并从 i=0 重新启动它。但是这个例子不起作用,并且 go() 的两个实例正在运行。(所以每秒有两个 print(i+=1) )

标签: pythonmultithreadingfunction

解决方案


尝试这个 :

from threading import Thread
import time
def main(arg = None):
     def go():
         global run
         run=True
         while run:
             print("running") 
             time.sleep(1)
     global run
     if run==True:
         run=False
         t = arg
         t.join()

     t = Thread(target = go)
     t.start()
     return t

run=False
t = main()
time.sleep(3)
main(t)

推荐阅读