【发布时间】:2015-11-03 15:49:45
【问题描述】:
在“视觉效果的多线程”一书中,我读到了以下几行:
任何在 Python 中运行的东西都是唯一在 Python 中运行的东西,这意味着如果您的执行回调全部在 Python 中实现,您将失去多线程系统的大部分效率收益。
Python 解释器不是线程安全的——它不能同时在多个线程中运行。需要使用 Python 的线程必须等待轮到它使用解释器。
为什么这个说法是正确的?
这与想法有关,即代码是在 C++ 中执行的。
static void MyCallback(const Context &context){
Auto<Lock> lock(GetMyMutexFromContext(context));
...
EvalMyPythonString(str); //A function that takes the GIL
...
}
那么究竟是什么意思呢?我们不能启动多个解释器吗?
【问题讨论】:
-
嗯,我理解正确吗,这仅适用于两个进程想要与一个 python 解释器交互的情况吗?
标签: python c++ multithreading