[英]Take multiple inputs simultaneously from console python
我正在研究电梯程序。 当有人按下中间的按钮时,电梯应该停止。
例如:如果电梯到 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()
其中 traverse 函数将电梯移动到所需楼层。
总之,我实现的想法是 1 个线程接受输入,其他线程一次移动电梯。 但是有没有其他方法可以代替线程(尽管这个解决方案有效)?
在某些情况下,您可以在不使用线程的情况下重写它,但是您没有提到如何获取用户输入。 你是从socket获取的吗? 或来自其他自定义协议等。所以在这里我提供了一些我认为可以工作的场景和解决方案。
如果以上 2 个解决方案不适合您的用例,那么您可以创建一个状态机,如果 traverse 是非阻塞的并且没有做太多工作。 如果 traverse 做的工作不仅仅是微不足道的,那么这个解决方案是不合适的,因为它可能会在单线程中长时间阻塞程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.