Jos*_*son 4 python thread-safety cython pyrex
如果没有,有没有办法通过编程方式保证线程安全?
澄清一下,在谈论"线程安全"时,我指的是Python线程,而不是操作系统级别的线程.
这完全取决于您的Cython代码和Python的GIL之间的交互,详见此处.如果你没有做任何特殊的事情,Cython生成的代码将尊重GIL(与不使用GIL释放宏的C编码扩展一样); 这使得这些代码"像Python代码一样线程安全" - 这不是很多,但比完全自由线程代码更容易处理(你仍然需要构建多线程协作和同步,理想情况下是Queue实例,但可能与锁定&c).
放弃GIL但尚未获得它的代码绝不能以任何方式与Python运行时和Python运行时使用的对象交互 - 这对于Cython和C编码扩展都是如此.它的好处当然是这样的代码可以在一个单独的核心上运行(当然,它需要同步或以任何方式再次与Python运行时通信).