吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1420|回复: 3
收起左侧

[求助] 【python】我想在while里写一个定时器,有input时停止定时,input结束继续定时

[复制链接]
thepoy 发表于 2020-10-28 22:28
本帖最后由 thepoy 于 2020-10-28 22:44 编辑

比如下面这个函数:

# 每隔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()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

klamauk 发表于 2020-10-28 22:40
这用多线程实现吧。
 楼主| thepoy 发表于 2020-10-28 22:43
rsnodame 发表于 2020-10-29 14:04
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表