同时从控制台python获取多个输入

问题描述 投票:1回答:1

我正在研究电梯程序。当有人按下按钮之间时,电梯应停止。

例如:如果电梯到达11楼,而在此之间有人按下3楼,则应该停止。

我尝试了使用多线程的程序,它的工作方式类似于:

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

遍历功能将电梯移至所需楼层。

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

python python-3.x multithreading python-2.7 python-multithreading
1个回答
0
投票

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

  1. 来自套接字:只需进行其他get_input并遍历协程,最后使用asyncio.gather。
  2. 从控制台:然后我们可以将asyncio替代项用于诸如输入等的常见操作,例如,检查此库https://github.com/vxgmichel/aioconsole。并如上所述使用asyncio.gather / wait。

如果以上两种解决方案都不适合您的用例,那么如果遍历没有阻塞并且没有太多工作,则可以创建状态机。如果遍历完成的工作量很少,则此解决方案不合适,因为它可能长时间阻塞单个线程中的程序

© www.soinside.com 2019 - 2024. All rights reserved.