我遇到了一个问题,我想从终端获取输入,但无法获取。 我能想到的原因是因为为此目的已经打开了一个套接字。我对结构的概述解释如下:
我有一个打开套接字的程序。然后,我打开另一个进程,在该进程中,我有一个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图,该图始终保持在那里(需要)。
答案 0 :(得分:1)
套接字不是这里的问题。但是,如果您未设置某些同步,则在终端中进行多处理读取会很危险。当多个线程或进程在同一个流上写入时,可能的最坏行为是所有输出的奇怪混合。但是,当多个进程线程争夺在同一输入流上读取时,一个(随机)将获得一些输入,而其他线程甚至看不到它。
规则是每个输入流一个阅读器。