使用 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
    ...
}