在python中,如何在不阻塞计时器的情况下等待输入?

在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

我需要每隔x秒打印一条消息,同时我需要倾听用户的输入。如果按下“q”,则应终止程序

比如说

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)