编程语言
首页 > 编程语言> > Python扩展是由Cython / Pyrex线程安全生成的吗?

Python扩展是由Cython / Pyrex线程安全生成的吗?

作者:互联网

如果没有,有没有办法通过编程方式保证线程安全?

澄清一下,在谈论“线程安全”时,我指的是Python线程,而不是操作系统级别的线程.

解决方法:

这完全取决于你的Cython代码和Python的GIL之间的交互,详见here.如果你没有做任何特殊的事情,Cython生成的代码将尊重GIL(如同不使用的C编码扩展一样) GIL释放宏);这使得这些代码“像Python代码一样线程安全” – 这不是很多,但比完全自由线程代码更容易处理(你仍然​​需要构建多线程协作和同步,理想情况下是Queue实例,但可能与锁定& c).

放弃GIL但尚未获得它的代码绝不能以任何方式与Python运行时和Python运行时使用的对象交互 – 这对于Cython和C编码扩展都是如此.它的好处当然是这样的代码可以在一个单独的核心上运行(当然,它需要同步或以任何方式再次与Python运行时通信).

标签:python,thread-safety,cython,pyrex
来源: https://codeday.me/bug/20190527/1160248.html