比如下面这个函数:
# 每隔2秒执行一次
def count(n):
n+=1
def main():
while True:
input('回车改 flag:\n')
print('这里进行了一些操作')
time.sleep(random.randint(1, 10))
print('操作完成')
我想在没有回车时,能有个定时器能每隔两秒执行一次count()函数,但一旦有回车事件,则这个定时器暂停,执行main()里的函数,main()函数执行完后,继续运行定时器2秒执行一次count()函数。
绞尽脑汁也没想到如何实现,请高手们支个招,谢谢!
10-28 22:43 更新
写出了代码,但觉得还不是很完美,所以还是希望高手支招,谢谢!
import random
import time
from threading import Timer, Thread, Lock, activeCount
mutex = Lock()
flag = True
def refresh(n: int):
global flag
if flag:
n += 1
print(n)
t = Timer(1, refresh, (n,))
t.start()
def main():
global flag
n = 0
while True:
t = Thread(target=refresh, args=(n,))
t.start()
input('回车改 flag:\n')
mutex.acquire()
flag = False
mutex.release()
print('这里进行了一些操作')
time.sleep(random.randint(1, 10))
print('操作完成')
print('当前线程数为{}'.format(activeCount()))
mutex.acquire()
flag = True
mutex.release()