gpt4 book ai didi

python - 子进程在 Windows 上有错误的 pid

转载 作者:行者123 更新时间:2023-12-04 13:31:18 25 4
gpt4 key购买 nike

主要.py:

from subprocess import Popen
import sys

proc = Popen([sys.executable, 'sub.py'])
print('parent thinks subprocess pid is', proc.pid)
子.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 上创建虚拟环境时,看起来复制到 venv 的 Script 文件夹的 python 解释器不是实际的 python 可执行文件,而是执行它的包装器。
如果你修改 sub.py 是这样的:

import os
import psutil
local_pid = os.getpid()
parent = psutil.Process(local_pid).parent()
print('subprocess thinks its pid is', os.getpid())
try:
print("parent process of our main python is", parent.pid)
except:
pass
您将看到 os.getpid() 将返回其自己的 pid 但在虚拟环境中执行时它有一个父级。但是,当 venv 停用时, main 和 sub.py 确实报告相同的 pid。

关于python - 子进程在 Windows 上有错误的 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com