在等待单独线程/进程上的输入时无限期地打印消息

时间:2015-11-24 03:24:27

标签: python python-2.7

我使用raspberry pi(运行最新的Jessie Raspbian构建)为项目创建嵌入式系统。连接的设备在Python中有我试图连接的库。然而,这是我第一次真正触及python(我通常使用Java或C / C ++),所以请原谅我缺乏知识。

到目前为止,我可以让我的键盘和液晶屏幕进行交互,但不能同时进行。我想让LCD屏幕循环显示一系列选项,同时还要监听键盘输入。

def WelcomeMessage():
    while 1:
        lcd.clear()
        lcd.message(...) #top line of lcd
        lcd.message(...) #bottom line of lcd
        time.sleep(3)
        #more messages 

听键盘输入很简单

#in the main function
digit = None
while digit == None:
    digit = kp.getKey() 

我尝试使用多进程,并使用 Start() 运行我的欢迎消息,例如:

#in main
p = multiprocess.Process(target = WelcomeMessage)
p.Start()
#doesn't get past this line
while digit == None:
    digit = kp.getKey() 
p.terminate() 

但它永远不会注册键输入,因为它永远不会进入while循环。 我也尝试在os lib中使用 fork() ,(因为它与c中的方式非常相似);然而,使用kill() SIGTERM 来结束子进程(因为while条件总是正确的,我没有一个干净的方法来结束它),但最终会杀死我的父进程好。

这似乎是一个简单的问题,所以我假设它是因为我自己缺乏知识。如果有人能告诉我使用fork或multiprocess来实现这一目的的正确方法,或者有一个很好的解决方法来从外部结束while循环,我将不胜感激。

0 个答案:

没有答案