【python】我想在while里写一个定时器,有input时停止定时,input结束继续定时
本帖最后由 thepoy 于 2020-10-28 22:44 编辑比如下面这个函数:
```python
# 每隔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 更新
写出了代码,但觉得还不是很完美,所以还是希望高手支招,谢谢!
```python
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()
```
这用多线程实现吧。 klamauk 发表于 2020-10-28 22:40
这用多线程实现吧。
是的,只能多线程 {:301_998:} 多线程,学习了
页:
[1]