python - 在其他线程/进程正在输出时接收标准输入

标签 python multithreading ncurses python-curses

我在问与this post相同的问题,但在Linux下的Python中。我有一个在后台运行的线程,该线程不断输出内容,但是我想将输入线保持在终端的底部,而不会被冲走。有人可以给我一个代码示例吗?假设我的代码是这样的:

from time import sleep
from multiprocessing import Process

def subproc():
  while True:
    print "something"
    sleep(1)
def main():
  p = Process(target=subproc)
  p.start()
  c = raw_input()

编辑:顺便说一句,如果可能的话,我想继续使用raw_input函数,因为我想拥有可用的输入历史记录。

最佳答案

不幸的是,没有任何方法不会导致一些严重或令人讨厌的后果。

数十年来,终端滚动和处理stdin/stdout的方式没有太大变化。

Take a look at terminal escape sequences.只要用户终端基于VT100或ansi规范,它们就应该起作用。您可以使用它们来设置写入位置,清除行等。但是,如果用户滚动,则幻觉将中断。

在早期的游戏(例如angband,rogue和nethack)中,解决了在屏幕上指定特定位置以输出角色的问题。解决方案是Curses库and there happens to be a curses python module

通过使用诅咒,您可以实现自己的目标。但我不知道在标准标准 shell 中执行此操作的方法

关于python - 在其他线程/进程正在输出时接收标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027416/

相关文章:

python - 如何在尊重基于时间的索引的同时正确使用 pandas diff

python - 在 python 中保留尾随零

java - 如何为 parallelStream 设置 ThreadLocal

java - notify/notifyall 是否释放被持有的锁

c++ - ncurses:用 C++ 处理终端中的键盘输入

c++ - 未初始化的两个实例之一

python - 如何在 OpenCV 中为视频创建多个模板图像

python - 无法使用 pickle 和多个模块加载文件

java - 没有volatile的线程安全

c - 使用 select 从套接字和标准输入读取