Python 从单独的线程调用时,自定义用户输入提示(对象构造函数)不会偶尔出现

Python 从单独的线程调用时,自定义用户输入提示(对象构造函数)不会偶尔出现,python,linux,multithreading,server,pyro,Python,Linux,Multithreading,Server,Pyro,具有以下形式的功能: def setup_my_object(): my_object = My_Object() my_object_daemon = Pyro4.core.Daemon(port=55666) Pyro4.Daemon.serveSimple({my_object: "my.object"},ns = False,daemon = my_object_daemon) Pyro4库允许通过网络访问对象。由于主进程创建多个不同的对象,因此使用以下方法创建

具有以下形式的功能:

def setup_my_object():
    my_object = My_Object()
    my_object_daemon = Pyro4.core.Daemon(port=55666)
    Pyro4.Daemon.serveSimple({my_object: "my.object"},ns = False,daemon = my_object_daemon)
Pyro4库允许通过网络访问对象。由于主进程创建多个不同的对象,因此使用以下方法创建单独的线程:

def main():
    threaded_object = threading.Thread(target = setup_my_object)
    threaded_object.start()
对象是形式的(实际上构造函数更复杂)

main()在从python控制台启动的linux服务器上运行。问题是,当我启动main()时,控制台从不提示我“是否要输入名称?”。我可能会按回车键-等待30秒-什么都没有。按enter键两次-等待30秒,无任何提示。只有当我像五次(无意中是第六次)一样单击enter时,它才会显示“是否要输入名称?”发生了什么以及如何避免这种情况,即获得“您想输入姓名吗?”的即时打印输出?


其他信息:在Windows计算机上启动时,我没有发现此问题;问题只出现在Linux机器上。

问题可能是您正在从不同线程输入和输出到stdin/stdout。线程和stdin/stdout不能很好地协同工作。设想4个线程都在
输入中等待
。。。然后按回车键。。。哪个线程将看到您的击键?这基本上是随机的。与他们的产出相同;多线程写入标准输出会产生非常奇怪的结果

但这并不能解释为什么会有这么大的延迟。您尚未显示所有代码。
main()
还有什么作用?如果用一些print语句替换启动守护进程的Pyro调用,问题是否会消失?基本上:找出问题的确切原因(哪行代码)并从那里继续

class My_Object(object):
    def __init__(self):
        name_option = input('\nDo you want to enter a name? [y/n]:\n')
        if (name_option == 'y')
            self.m_name = add_name()

    def add_name(self):
        name = input('\nPlease enter the name: \n')
        return(name)