我有一些C绑定,可以进行很多磁盘访问。
当C库阻塞磁盘访问时GIL是否被释放?

最佳答案

正如您所建议的那样,作为Python程序一部分运行的C库可以在执行大量计算之前释放GIL,而无需访问Python对象,这样做确实会允许在后台继续进行I/O,从而实现更多的并行性。但是,除非这个库是为Python环境设计的,否则它可能不会,即使它是,也不能保证它会释放GIL。
如果这些库不是专门为Python设计的,它们就不会发布GIL。在这种情况下,您可以通过在管理GIL的C包装器中包装适当的函数来实现很多功能。
如果这些库不是专门针对Python的,或者如果GIL在它们的文档中没有提到,那么唯一确定的方法就是检查源代码。您的C代码可以使用functions defined in Python's C API操作GIL。

关于python - 当C绑定(bind)阻塞时,Python会释放Global Interneter Lock吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54285612/

10-17 01:15
查看更多