使用os.system异步,独立于python进程?

时间:2011-08-24 19:02:40

标签: python asynchronous process system

当使用os.system打开文件时,例如:os.system(r'C:/foo.txt'),当前的Python进程当然会等到系统调用返回。 (即:文本编辑关闭) 我是否必须使用Thread来使其异步?

想象一下以下情况:

我正在使用Python编写Windows文件管理器。用户单击文件。现在使用os.system(the_path_to_the_file_clicked)将使用默认程序打开文件,如注册表中所设置的那样 使用Thread来使系统调用异步可以很好地工作,但是当用户关闭文件管理器时呢? Python进程将保持活动直到线程退出,但这不是不必要的吗?另一方面,终止Python进程也将终止Thread,程序关闭。

有没有办法使用系统调用来打开一个独立于Python进程的新进程?

1 个答案:

答案 0 :(得分:4)

如果您想使用默认程序在Windows上打开文件,则会有一个特殊的功能,它可以独立于您自己的程序打开它:os.startfile。这应该做你想要的。

更一般地说,为了异步运行程序,os.system无法执行此操作。但是,the subprocess module可以。子进程模块几乎完成了os.system所做的一切,还有更多。但是,与os.system一样,当您使用subprocess.Popen时,程序不会独立于您的进程打开 - 当您的进程终止时,子进程也会死。