gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:54 25 4
gpt4 key购买 nike

具有以下形式的功能:

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()

对象是形式(实际上构造函数更复杂)。

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)

main() 在 linux 服务器上运行,从 python 控制台启动。问题是当我启动 main() 时,控制台从不提示我“你想输入名称吗?”。我可能会按回车键 - 等待 30 秒 - 什么也没有。两次输入 - 等待 30 秒。只有当我点击输入五次(无意中点击第六次)时,它才会显示“你想输入名字吗?”。 这是怎么回事,我该如何避免这种情况,即即时打印“您要输入姓名吗?”?

附加信息:在 Windows 机器上启动时我没有看到这个问题;问题仅出现在 Linux 机器上。

最佳答案

问题可能是您正在从不同的线程对标准输入/标准输出进行输入和输出。线程和标准输入/标准输出不能很好地协同工作。想象一下 4 个线程都在等待它们的 input...然后您按下 enter...哪个线程会看到您的击键?那基本上是随机的。与他们的输出相同;多个线程写入 stdout 会产生非常奇怪的结果。

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

关于python - 从单独的线程调用时,自定义用户输入提示(到对象构造函数)不会出现/偶尔出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com