使用 C 扩展来并行化任务
这里的想法是将计算密集型作业移动到 C(使用特殊宏),独立于 Python,并让 C 代码在其工作时释放 GIL。
#include "Python.h"
...
PyObject *pyfunc(PyObject *self, PyObject *args) {
...
Py_BEGIN_ALLOW_THREADS
// Threaded C code
...
Py_END_ALLOW_THREADS
...
}
这里的想法是将计算密集型作业移动到 C(使用特殊宏),独立于 Python,并让 C 代码在其工作时释放 GIL。
#include "Python.h"
...
PyObject *pyfunc(PyObject *self, PyObject *args) {
...
Py_BEGIN_ALLOW_THREADS
// Threaded C code
...
Py_END_ALLOW_THREADS
...
}