首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从控制台python同时接受多个输入

从控制台python同时接受多个输入
EN

Stack Overflow用户
提问于 2019-11-26 21:14:13
回答 1查看 131关注 0票数 0

我正在做电梯程序。当有人按下中间的按钮时,电梯应该停下来。

如果电梯到了11楼,中间有人按了3楼,那么电梯应该停下来。

我尝试了使用多线程的程序,它的工作方式如下:

代码语言:javascript
复制
    while(True):
        t1= threading.Thread(target=get_input, name='t1')
        t2= threading.Thread(target=traverse, name='t2')
        t1.start()
        time.sleep(5)
        traverse()
        t2.start()

其中traverse函数将电梯移动到所需楼层。

简而言之,我实现的想法是一个线程接受输入,其他线程一次移动电梯。但是,有没有其他方法来代替线程(尽管这个解决方案是有效的)?

EN

回答 1

Stack Overflow用户

发布于 2019-11-26 22:01:24

在某些情况下,您可以在不使用线程的情况下重写它,但是您没有提到如何获取用户输入。你是从socket得到的吗?或者来自其他自定义协议等。所以在这里,我提供了一些我认为可以工作的场景和解决方案。

  1. From Socket:只需创建其他get_input并遍历协程,并在end.
  2. From控制台使用:然后您可以将异步替代用于常见的操作,如输入等,例如,检查此库https://github.com/vxgmichel/aioconsole。并如上所述使用asyncio.ather/wait。

如果上面两个解决方案不适合你的用例,那么你可以创建一个状态机,如果遍历是非阻塞的,并且不做太多的工作。如果遍历执行大量工作,则此解决方案不合适,因为它可能会长时间阻塞单线程中的程序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59051795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档