使用操作系统.系统异步,独立于python进程



当使用os.system打开文件时,例如:os.system(r'C:/foo.txt'),当前Python进程当然会等待系统调用返回。(即。:文本编辑器关闭)。
我必须使用一个线程来使它异步吗?

想象以下情况:

我正在用Python为Windows写一个文件管理器。用户单击一个文件。现在使用os.system(the_path_to_the_file_clicked)将使用默认程序打开文件,如注册表中设置的。
使用线程使系统调用异步化会工作得很好,但是当用户关闭文件管理器时呢?在线程退出之前,Python进程将保持活动状态,但这不是不必要的吗?另一方面,终止python进程也会终止Thread,程序关闭。

是否有一种方法可以使用系统调用来打开一个独立于python进程的新进程?

如果你想用默认程序在windows上打开一个文件,有一个特殊的函数可以异步打开它,并且独立于你自己的程序:os.startfile。这应该是你想要的。

更一般地说,对于异步运行的程序,os.system不能这样做。但是,子流程模块可以。子进程模块几乎完成了os.system所做的一切,甚至做得更多。但是,就像os一样。系统,当您使用子进程时。Popen,程序不是独立于您的进程打开的——当您的进程死亡时,子进程也会死亡。

最新更新