在Python中运行与父进程无关的子进程

2 投票
2 回答
8042 浏览
提问于 2025-04-18 13:34

我有一个程序是在另一个程序里面运行的。父程序在子程序运行的时候会卡住。有没有办法让这个子程序在操作系统里自己变成一个父程序来运行呢?

2 个回答

0

如果你真的想要独立的进程,可以看看 multiprocessing 这个模块。如果你只需要在同一个操作系统进程中运行一个单独的线程,那就用 threading。或者你是想从Python脚本中启动一个外部程序,可以用 subprocess

不过,术语有点让人困惑。比如在Linux中,“线程”和“进程”都是独立的,实际上没有太大区别。在Python中,“进程”是指一个独立的操作系统进程,而“线程”是在同一个操作系统进程中运行的。

想了解更多信息,可以看看这个问题:Multiprocessing vs Threading Python

5

你可以使用 subprocess.Popen,假设你真的想要启动一个和父Python脚本完全独立的程序:

import subprocess
subprocess.Popen(["command", "-a", "arg1", "-b", "arg2"])

这样做会把 command 作为调用脚本的一个子进程启动,并且不会阻塞,也就是说它不会等这个子进程完成后再继续执行。如果父进程退出了,子进程仍然会继续运行。

撰写回答