Python 获取用户输入并通过队列传递到新进程

Python 获取用户输入并通过队列传递到新进程,python,queue,multiprocessing,Python,Queue,Multiprocessing,简而言之,我试图运行一个带有变量的函数(循环),比如“val”,以及另一个获取用户输入“val”的函数。用户将输入一个初始值,但随后可以更改该值,循环将不间断地运行并采用这个新值“val” 我知道我需要使用多处理、队列和stdin,如下所示:。虽然我似乎无法让进程运行。我在每个部分都找到了有效的例子,但我无法将它们结合在一起发挥作用 from multiprocessing import Process, Queue import time import sys import os def r

简而言之,我试图运行一个带有变量的函数(循环),比如“val”,以及另一个获取用户输入“val”的函数。用户将输入一个初始值,但随后可以更改该值,循环将不间断地运行并采用这个新值“val”

我知道我需要使用多处理、队列和stdin,如下所示:。虽然我似乎无法让进程运行。我在每个部分都找到了有效的例子,但我无法将它们结合在一起发挥作用

from multiprocessing import Process, Queue
import time
import sys
import os

def reader(q):
    while True:
        #do some stuff 
        if q.empty() == False: #Code gets hung here
            msg = q.get(block = False)  #These few lines will change       
            if (msg == 10):     #Not sure of syntax with this so going basic
            print('Value:'+str(msg))
            break


if __name__=='__main__':

    q = Queue()   

    reader_p = Process(target=reader, args=((q),))
    reader_p.daemon = True
    reader_p.start()
    while True:
        msg = input("Enter: ")
        q.put(msg)

    reader_p.join()
*注意:我使用
q.get()!=false:
但仍然不确定语法

问题似乎出现在
q.get()
程序到达
q.get(block=False)
时,即程序停止并向我发出
队列。empty
错误。 通过我的编辑,代码现在被挂起。如果去掉这一点,就会出现上述错误

Python不是我最好的语言,我也不熟悉队列,所以我对它不是很了解,所以我希望您能修复我的语法错误,或者指出我是否使用了不正确的函数

编辑:根据最初的措辞,有人提到线程可能是最好的选择。但我要说的是,我使用的实际代码使用2+循环(目前),需要在单个变量上运行

Psudo Code:

process 1:
    get input
    infinte loop:
        do something with input variable  
        #this is on a rasp pi and is just going to output onto display                  
        #it needs to run on infinite loop till program is killed 

precess 2:
    check for new input
    new input is different than last/first input? 
         send input to process #1 

当然,我不知道您的用例,但正如问题所述,我想说,听起来您需要的是不同的线程,而不是不同的进程。@JohanL我知道我的措辞可能不清楚,我为使用不清楚的示例代码表示歉意。但除非我弄错了,否则我确实需要进程,因为我只希望在某个实例上传递新变量。除此之外,还将使用2个以上的进程(或线程)。如果这可以与踏板这将是一个对我的一部分网站,我将享受帮助,如何使这与踏板发生!这些进程不会在同一硬件上运行吗?或者两者都在同一个Raspberry Pi上运行?它们将在同一个RPi上运行,一个脚本。您是否有连接的键盘,或者如何提供输入?如果只有一个进程处理用户输入,那么最好让它成为主进程,然后在其他进程中处理计算,因为主进程自动拥有stdin和stdout。