我想使用Agg后端与Matplotlib并行绘制多个核心上的数字,而无需启动多个Python进程。如果Matplotlib在绘制数字时发布全局解释器锁(GIL),则可以通过多线程实现这一点。
我已尝试在Matplotlib代码库中搜索释放GIL所需的PyEval_SaveThread
和Py_BEGIN_ALLOW_THREADS
。基于此搜索,似乎Matplotlib仅在resampling images.时释放GIL。如果在扩展中创建新线程,除了在OS X特定文件中,则会发生PyGILState_Ensure
调用。但是,我并不真正了解Matplotlib源代码,GIL版本可能会在依赖项中发生。