在《视觉效果的多线程》一书中,我读到以下内容:
“在Python中运行的任何内容都是Python中唯一正在运行的内容。这意味着,如果你所有的执行回调都实现在Python中,你会失去大部分多线程系统的效率提升。”
“Python解释器不是线程安全的——它不能从多个线程同时运行。需要使用Python的线程必须等待使用解释器的轮到它们了。”
为什么这个说法是正确的?
这是基于代码是由C++内部执行的想法而形成的。
那么这究竟是什么意思呢?我们不能启动多个解释器吗?
“在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
...
}
那么这究竟是什么意思呢?我们不能启动多个解释器吗?