我有一些C绑定可以进行大量磁盘访问。
当C库阻止访问磁盘时,是否释放了GIL?
答案 0 :(得分:2)
C库可以在执行大量计算之前释放GIL,而无需访问Python对象,并且这样做确实可以通过允许I / O继续运行而实现更多的并行性。背景。但是,除非该库旨在用于Python环境,否则它可能不会这样做,即使无法保证它也不会发布GIL。
如果这些库不是专门为Python设计的,它们将不会发布GIL。在那种情况下,您可以通过将适当的功能包装在管理GIL的C包装程序中来实现很多目标。
如果这些库不是专门针对Python的,或者如果其文档中未提及GIL,则唯一可以确定的方法是检查源代码。您的C代码可以使用functions defined in Python's C API来操纵GIL。