考虑下面的Python命令行程序。它不起作用是因为它不完整,但我认为它说明了问题:
#!/usr/bin/python3
import multiprocessing
pool = multiprocessing.Pool()
for task in expensive_iterator_with_user_interaction():
pool.call_async(expensive_computation, (task,))
pool.close()
print("Dear user, you may now press Ctrl-Z and bg this script.")
pool.join()
因此,问题是这个脚本在启动昂贵的并行进程时需要用户输入。但还有一个时刻,不再需要用户交互。然后,我要求用户使用shell操作来后台处理这个过程。在
然而,这是否也可以通过程序本身来实现?在
(旁注:问题的核心是用户输入与“昂贵计算”的纠缠。因此,我不能在两个脚本中分离这两个脚本,并让其中一个作为守护进程生成另一个。)
命令
screen
可能会对您有所帮助。在使用
screen -L
创建新会话并运行应用程序。输入一些数据后,您可以按键盘上的“Ctrl-A”,然后按键盘上的“D”来分离会话。在应用程序正在后台运行。在
如果要执行其他操作或输入更多数据,可以使用命令
screen -r
重新附加到上一个会话。在screen
就像一个虚拟屏幕,因此您可以根据需要将程序切换到后台或前台。在相关问题 更多 >
编程相关推荐