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