好的,从我在搜索中看到的内容(即使使用线程)sys.stdin
也将对您不利,无论您如何使用它(input()
,甚至sys.stdin.read()
是。。readline()
等),因为它们会阻塞。
而是将您的管理器程序编写为套接字服务器或类似的程序。
将脚本编写为生成器,旨在暂停执行(每次击中ayield
),然后next()
依次依次依次调用每个脚本。StopIteration
脚本完成后,您将获得一个异常。
为了处理命令,编写第二个脚本,该脚本连接到管理器程序的套接字并发送消息,这将是用户与之交互的控制台界面(以后,您甚至可以将其升级为GUI,而无需在其他地方进行任何改动)。
服务器在脚本上运行下一个迭代之前会选择这些命令,并且如果用户暂停了脚本,则管理器程序只是不会调用next()
该脚本,直到用户告诉它再次运行为止。
我尚未对此进行测试,但是我 认为 它比为外部脚本制作线程或子进程然后尝试暂停(然后终止)它们更好。
这确实超出了我的理解范围,但是也许可以在后台运行脚本并使用kill -stop
和kill -cont
暂停并继续运行(假设Linux)?