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



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

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

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

不,他们没有,子进程作为单独的实体分叉/生成,因此每个进程实际上都是作为一个全新的 Python 实例开始的。

Python通过透明地挑选/取消挑取数据在进程之间传输来隐藏一些肮脏的东西,但它们都有自己的堆栈,自己的GIL以及随之而来的一切。

多线程是一个不同的故事 - 线程确实共享底层堆栈,但Python将它们分区,因为它们都有自己的堆栈inspect.stack()因此结果可能会令人困惑/不可预测。

相关内容

  • 没有找到相关文章

最新更新