同时进行原始输入和打印
我有一个使用线程的Python程序,它可以同时接收用户输入和打印数据。问题是,当程序在等待用户输入时(也就是在raw_input()这一行),它不会立即打印任何内容,而是等用户按下回车键后才会把所有内容一起打印出来。
有没有办法让用户输入和打印内容可以同时进行呢?
1 个回答
1
你基本上有两种选择:线程和异步输入输出。
你可以让一个线程把输入的数据放到一个队列里,然后让另一个线程把这些数据打印出来。不过要注意,线程编程很难(几乎不可能)做到完美。
异步输入输出的意思是你有一个主调度器,当数据可用时(比如用户输入了数据),它会调用一些回调函数。有一些框架可以帮你简化这个过程,比如asyncore和Twisted。
大多数图形用户界面工具包也会通过它们的主循环实现异步调度系统,比如Tkinter、wxWidgets和pygtk。这也能解决你在同一个(终端)屏幕上同时读取和写入时遇到的界面问题。