python 中的调用堆栈是否分别在多线程和多处理中的线程或进程之间共享?

Does the calling stack in python's shared between the threads or the processes in multithreading and multiprocessing respectively?

我正在 python 中编写代码,其中包括一些 multiprocessingmultithreading

我的问题是:线程或进程是否共享同一个调用堆栈?

我正在使用 inspect 模块,我担心它会 return 我在 inspect.stack() 中输入错误的值。

不,他们没有,子进程得到 forked/spawned 作为单独的实体,因此每个进程作为一个全新的 Python 实例有效地启动。

Python 通过透明地 pickling/unpickling 在进程之间传输的数据隐藏了一些肮脏的东西,但它们都有自己的堆栈、自己的 GIL 以及所有与之相关的东西。

多线程是另一回事 - 线程确实共享底层堆栈,但 Python 将它们分区以显示每个线程都有自己的堆栈,因此 inspect.stack() 结果可以是 confusing/unpredictable..