如何在Visual Studio Code中让Python多进程代码分别在独立终端运行以追踪各自输出
如何让Python子进程在独立终端输出并与主进程分离?
我来给你几个实用的方案,帮你解决主、次级代码输出混杂,想要各自在独立终端显示的问题:
核心问题在于你当前用的multiprocessing子进程默认会共享主进程的标准输出流,所以两者的打印信息会混在一起。要实现独立终端输出,我们可以改用subprocess模块启动新的终端窗口执行次级脚本,或者通过输出重定向实现分离查看。
方案一:用subprocess启动独立终端(推荐)
这种方法直接让次级脚本在全新的终端窗口运行,输出完全独立,完美匹配你的需求。
Windows系统(适配cmd/PowerShell)
修改你的主代码Multiprocess_Part_1.py如下:
import subprocess from time import sleep def main(): a = 1 + 1 print(a) # 启动新cmd窗口执行次级脚本 subprocess.Popen(['cmd.exe', '/c', 'python', 'Multiprocess_Part_2.py']) sleep(10) main() if __name__ == '__main__': main()
Linux/macOS系统(适配系统终端)
根据你的系统选择对应的命令,比如Linux用xterm,macOS用系统自带的终端:
import subprocess from time import sleep def main(): a = 1 + 1 print(a) # Linux版本:用xterm启动新终端执行脚本 subprocess.Popen(['xterm', '-e', 'python3 Multiprocess_Part_2.py']) # macOS版本:替换上面的行,用系统终端启动 # subprocess.Popen(['open', '-a', 'Terminal', 'python3 Multiprocess_Part_2.py']) sleep(10) main() if __name__ == '__main__': main()
同时别忘了给次级脚本Multiprocess_Part_2.py加上可执行入口:
def secondary(): b = 2 + 2 print(b) # 让脚本可以被直接调用执行 if __name__ == '__main__': secondary()
方案二:输出重定向到文件(备选)
如果你不想打开太多终端窗口,也可以把次级脚本的输出定向到文件,然后在另一个终端实时查看:
修改主代码中的subprocess命令:
# Windows系统 subprocess.Popen(['cmd.exe', '/c', 'python Multiprocess_Part_2.py > secondary_output.txt 2>&1']) # Linux/macOS系统 subprocess.Popen(['bash', '-c', 'python3 Multiprocess_Part_2.py > secondary_output.txt 2>&1'])
然后打开新终端,执行以下命令实时查看输出:
# Windows PowerShell Get-Content secondary_output.txt -Wait # Linux/macOS tail -f secondary_output.txt
为什么不用multiprocessing?
multiprocessing.Process创建的子进程会和主进程共享标准输入输出流,即便手动重定向输出,也很难直接让它在全新的终端窗口运行——而subprocess可以直接调用系统终端命令,启动独立的终端进程,这是最直接的解决方式。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

