【发布时间】:2020-11-17 23:07:44
【问题描述】:
main.py:
from subprocess import Popen
import sys
proc = Popen([sys.executable, 'sub.py'])
print('parent thinks subprocess pid is', proc.pid)
sub.py:
import os
print('subprocess thinks its pid is', os.getpid())
python main.py 在 Linux 上的输出:
parent thinks subprocess pid is 338
subprocess thinks its pid is 338
Windows 上的输出:
parent thinks subprocess pid is 17340
subprocess thinks its pid is 7308
这是为什么?
编辑:print(sys.executable) 给出C:\my-venv\Scripts\python.exe
【问题讨论】:
-
Windows 测试中的
sys.executable是什么? -
C:\my-venv\Scripts\python.exe(main.py 和 sub.py 的输出相同)
-
@Chris 应该进入你的问题本身,而不是评论
-
这可能是子进程启动另一个子进程的情况,尽管我对 Windows Python 启动器了解得不够多,不知道为什么会发生这种情况。
-
@user2357112supportsMonica - 我也在想同样的事情,就像涉及某种包装脚本一样。虽然......如果是Linux,在那种情况下这两个数字不会接近吗?我一般对Window不太了解,可能在Windows上也不是这样。
标签: python subprocess python-3.7