在不同线程/进程上等待输入时无限期打印消息

2024-09-27 09:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用raspberry pi(运行最新的Jessie Raspbian构建)为一个项目创建一个嵌入式系统。连接的设备有Python中的库,我正在尝试连接这些库。但是,这是我第一次真正触摸Python(我通常用java或C++),所以我事先就不知道知识了。你知道吗

到目前为止,我可以使我的键盘和液晶屏互动,但不能同时进行。我想让液晶屏幕循环通过一系列的选项,同时也听键盘输入。你知道吗

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条件始终为true,所以我没有一个干净的方法来结束它),但这最终也会杀死我的父进程。你知道吗

这似乎是一个简单的问题,所以我想这是因为我自己缺乏知识。如果有人能告诉我使用fork或multiprocess来完成这个任务的正确方法,或者有一个从外部结束while循环的好方法,我将不胜感激。你知道吗


Tags: of方法innonemessagelcd进程main

热门问题