Python 以正确的格式将打印输出到终端

Python 以正确的格式将打印输出到终端,python,Python,我编写了一个非常简单的程序,它有多个线程,应该打印到终端。一个线程打印出10颗星的数组,另一个线程应该在后台运行,等待检测任何键盘按下。我无法解决的是,如果第二个线程正在运行,终端中的输出无法正确打印。如果第二个线程停止,那么输出就是所需的 完整代码(按要求): 电流输出: * * * * 5 * * * * * * * * * 4 * * * * * * * * * 3 * * * *

我编写了一个非常简单的程序,它有多个线程,应该打印到终端。一个线程打印出10颗星的数组,另一个线程应该在后台运行,等待检测任何键盘按下。我无法解决的是,如果第二个线程正在运行,终端中的输出无法正确打印。如果第二个线程停止,那么输出就是所需的

完整代码(按要求):

电流输出:

* * * * 5 * * * * *

            * * * * 4 * * * * *

                                        * * * * 3 * * * * *

                                                            * * * * 2 * * * * *

                                                                                * * * * 1 * * * * *

                                                                                                    * * * * * * * * * *


                                                                                                                                GO

问题出现在这里:

tty.setraw(sys.stdin.fileno())
  ch = sys.stdin.read(1)
tty被设置为原始模式,然后被告知等待读取字符。当这个线程等待输入时,另一个线程继续输出。它继续以原始模式输出tty。您可以通过将getchr()更改为

这将使tty处于原始模式,然后立即终止线程。使用此方法,即使只有1个线程正在运行,您仍将获得相同的、不希望的输出


最简单的解决方法是使用从的方法。

需要将
tty.setraw
更改为
tty.setcbreak

这是一个似乎毫无意义的问题,因为另一个线程不应该打印到终端上?@饼干你能添加复制这种奇怪打印所需的所有代码吗?@拉尔夫在所有的列表中添加了代码在那里!谢谢-问题现在解决了!(需要将tty.setraw更改为tty.setcbreak)
* * * * 5 * * * * *

            * * * * 4 * * * * *

                                        * * * * 3 * * * * *

                                                            * * * * 2 * * * * *

                                                                                * * * * 1 * * * * *

                                                                                                    * * * * * * * * * *


                                                                                                                                GO
tty.setraw(sys.stdin.fileno())
  ch = sys.stdin.read(1)
def getchr():
  tty.setraw(sys.stdin.fileno())
  exit(0)