Python中的多线程还是串行处理?

Python中的多线程还是串行处理?,python,c++,multithreading,Python,C++,Multithreading,在“视觉效果的多线程”一书中,我读到了以下几行: 在Python中运行的任何东西都是在Python中运行的唯一东西,这意味着如果您的执行回调都是在Python中实现的,那么您将失去多线程系统的许多效率增益 Python解释器不是线程安全的——它不能从多个线程同时运行。需要使用Python的线程必须等待轮到它使用解释器 为什么这句话是真的 这是绑定到的,代码是从C++内部执行的。 static void MyCallback(const Context &context){ Auto<

在“视觉效果的多线程”一书中,我读到了以下几行:

在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
...    
}
静态void MyCallback(常量上下文和上下文){
自动锁定(GetMyMutexFromContext(context));
...
EvalMyPythonString(str);//一个接受GIL的函数
...    
}
那么到底是什么意思呢?我们不能启动多个口译员吗

在Python中运行的任何东西都是在Python中运行的唯一东西,这意味着如果您的执行回调都是在Python中实现的,那么您将失去多线程系统的许多效率增益

Python解释器不是线程安全的——它不能从多个线程同时运行。需要使用Python的线程必须等待轮到它使用解释器

这句话是真的吗?这取决于您使用的python解释器

使用Cpython:由于全局解释器锁(GIL),一次只能运行一个线程。因此,您无法利用使用多线程的性能优势。甚至,当在Cpython中使用多个线程时,程序也会变慢

如果您想用Cpython编写并行程序,应该使用。其接口与模块相同


或者,您可以在Ironthon的Jython中使用多线程。

了解一下:嗯,我是否正确理解,这只适用于两个进程希望与一个python解释器交互的情况,对吗?