gpt4 book ai didi

python - 如何实现定时后台功能?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:55 29 4
gpt4 key购买 nike

简单的应用:

  • 提示用户输入。
  • 启动倒计时(或正计时)计时器。
  • 等待用户输入(计时器倒计时/倒计时)。
  • 如果用户输入正确的响应,则条件语句 1
  • Else,条件语句2
  • 如果用户超过预设时间,计时器就会到期,并相应地引导用户。

我已经尝试过该网站上提供的一些解决方案。然而,在所有情况下,一旦生成用户输入提示,加/减计时器似乎就会停止。换句话说,计时器似乎没有作为单独的(后台)线程运行。

import threading
import time

class TimerClass(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
self.count = 10

def run(self):
while self.count > 0 and not self.event.is_set():
print (self.count)
int_answer = (int(input('Enter your age: '), base = 10)
str_answer = str(int_answer)
while str_answer == '':
self.count -= 1
self.event.wait(10)
if (int_answer > 50) :
<do something>
else:
<do somethingelse>

def stop(self):
self.event.set()

tmr = TimerClass()
tmr.start()

time.sleep(1)

tmr.stop()

如果提供的响应 > 50,则程序应进入条件 1;否则,如果输入的响应 <= 50,则转至条件 2。计时器应在 10 秒后到期。如果用户未提供响应(通过用户通知)。

最佳答案

我已经改编了 this answer 中的代码根据您的需求:

import threading
import queue
import time

def read_kbd_input(inputQueue):
print('Ready for keyboard input:')
while (True):
input_str = input()
inputQueue.put(input_str)

def main():
inputQueue = queue.Queue()

inputThread = threading.Thread(target=read_kbd_input, args=(inputQueue,), daemon=True)
inputThread.start()

start_time = time.time()
while True:
if (inputQueue.qsize() > 0):
input_str = inputQueue.get()
# Insert your code here to do whatever you want with the input_str.
print("input_str = {}".format(input_str))
break

time.sleep(0.1) # poll each 100ms
if time.time() - start_time > 2: # timeout after 2 sec
break
print("End.")

if (__name__ == '__main__'):
main()

关于python - 如何实现定时后台功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444772/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com