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

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

我正在使用inspect模块,恐怕它将在inspect.stack()中返回错误的值。

最佳答案

不,它们不是,子流程作为独立的实体被派生/生成,因此每个流程都作为一个全新的Python实例有效地启动。

Python通过透明地腌制/取消腌制要在进程之间传输的数据来掩盖其中的某些麻烦,但是它们都拥有自己的堆栈,自己的GIL以及随之而来的所有内容。

多线程是另一回事-线程确实共享底层堆栈,但是Python对其进行分区以使其具有各自的堆栈,因此inspect.stack()结果可能令人困惑/无法预测。

关于python - python中的调用堆栈是否在多线程和多处理中的线程或进程之间分别共享?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44571938/

10-14 21:10
查看更多