建立套接字连接后,从端子获取输入

时间:2018-08-09 07:35:09

标签: python python-3.x python-multiprocessing

我遇到了一个问题,我想从终端获取输入,但无法获取。 我能想到的原因是因为为此目的已经打开了一个套接字。我对结构的概述解释如下:

我有一个打开套接字的程序。然后,我打开另一个进程,在该进程中,我有一个input语句,我想从该语句中获取输入,但是它不起作用。 print语句在除输入语句之后的所有地方都可以正常工作。

mainFile.py:

if __name__ == "__main__":
       pose_face = face.Pose_Face()
       async_lesson = Process(target=lesson.start_lesson, args=(lesson_args,return_dict))

face.py:

class Pose_Face:
def __init__(self):
    context = zmq.Context()
    print("Connecting openface server..")
    self.socket = context.socket(zmq.REQ)
    self.socket.connect("tcp://127.0.0.1:5562")

lesson.py:

class lesson:
def start_lesson(d,return_dict):
    txt_resp = input("Enter Text ") //TAKING INPUT
    print("text input : " + txt_resp) //THIS IS NOT GETTING PRINTED

我刚刚给出了一个简短的代码版本,因为我猜这个问题与代码无关,而主要与概念有关。我尝试寻找实现此目的的方法,但未能做到。在终端中出现Enter Text语句,当我输入文本并按Enter时,什么也没有发生,甚至下一条打印行也没有打印。

编辑:如果此信息有任何帮助,请使用Ubuntu终端。另外,在mainFile.py中执行了这两个语句之后,我还绘制了一个matplot图,该图始终保持在那里(需要)。

1 个答案:

答案 0 :(得分:1)

套接字不是这里的问题。但是,如果您未设置某些同步,则在终端中进行多处理读取会很危险。当多个线程或进程在同一个流上写入时,可能的最坏行为是所有输出的奇怪混合。但是,当多个进程线程争夺在同一输入流上读取时,一个(随机)将获得一些输入,而其他线程甚至看不到它。

规则是每个输入流一个阅读器