在python中,如何在不阻塞计时器的情况下等待输入?
我需要每隔x秒打印一条消息,同时我需要倾听用户的输入。如果按下“q”,则应终止程序 比如说在python中,如何在不阻塞计时器的情况下等待输入?,python,multithreading,python-multithreading,Python,Multithreading,Python Multithreading,我需要每隔x秒打印一条消息,同时我需要倾听用户的输入。如果按下“q”,则应终止程序 比如说 some message . . # after specified interval . some message q # program should end 我现在面临的问题是,raw_input被阻塞,这会阻止my函数重复消息。如何使输入读数和函数并行运行 编辑:原来raw\u输入没有阻塞。我误解了多线程的工作原理。我把这个留在这里,以防有人无意中发现 您可以使用线程在不同的线程中打印邮件 i
some message
.
. # after specified interval
.
some message
q # program should end
我现在面临的问题是,raw_input
被阻塞,这会阻止my函数重复消息。如何使输入读数和函数并行运行
编辑:原来
raw\u输入
没有阻塞。我误解了多线程的工作原理。我把这个留在这里,以防有人无意中发现 您可以使用线程在不同的线程中打印邮件
import threading
t = threading.Timer(30,func,args=[])
t.start()
其中30是调用func的频率
func是在不同线程中调用的函数
import threading
t = threading.Timer(30,func,args=[])
t.start()
args是用来调用函数的参数数组
如果你只想调用一个不同的函数,你可以这样做
t = threading. Thread(target=func, args=[])
t.start()
这将使func并行运行是否使用线程?可能重复:@cisforcoockies是,我使用线程。但不要求是一根线。只要达到预期效果@ρss,我认为post回答了一个不同的问题。调用
raw\u input()。指定的间隔实际上不是间隔,而是延迟。它在调用func和period之前等待30秒,30秒后将不会再次触发
import threading
import time as t
value = 0
def takeInput():
"""This function will be executed via thread"""
global value
while True:
value = raw_input("Enter value: ")
if value == 'q':
exit() # kills thread
print value
return
if __name__ == '__main__':
x = int(raw_input('time interval: '))
thread = threading.Thread(target=takeInput)
thread.start()
while True:
if value == 'q':
exit() # kills program
print 'some message'
t.sleep(x)