我目前正在使用 subprocess.Popen(cmd, shell=TRUE)
启动程序
我是 Python 的新手,但它“感觉”应该有一些 api 可以让我做类似的事情:
subprocess.Popen(cmd, shell=TRUE, postexec_fn=function_to_call_on_exit)
我这样做是为了 function_to_call_on_exit
可以在知道 cmd 已经退出的情况下做一些事情(例如保持当前运行的外部进程的数量)
我假设我可以相当简单地将子进程包装在一个类中,该类将线程与 Popen.wait()
方法结合在一起,但是因为我还没有在 Python 中完成线程,而且看起来这对于 API 来说可能足够普遍存在,我想我会先尝试找到一个。
提前致谢 :)
原文由 Who 发布,翻译遵循 CC BY-SA 4.0 许可协议
你是对的 - 没有好的 API 可以做到这一点。您的第二点也是正确的-设计一个使用线程为您执行此操作的函数非常容易。
即使线程在 Python 中也很容易,但请注意,如果 on_exit() 的计算量很大,您将希望将其放在一个单独的进程中,而不是使用多进程(这样 GIL 就不会减慢您的程序)。它实际上非常简单 - 您基本上可以将对 — 的所有调用替换为
threading.Thread
multiprocessing.Process
因为它们遵循(几乎)相同的 API。