停止运行某个函数,然后再次调用它

时间:2020-07-05 11:09:30

标签: python multithreading function

我希望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-无穷大的示例。当再次调用main函数时,我想暂停执行并从i = 0重新开始。但是此示例不起作用,并且正在运行两个go()实例。(因此,每秒有两个print(i + = 1))

1 个答案:

答案 0 :(得分:-1)

尝试一下:

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)
相关问题