当C绑定阻止时,Python是否会发布Global Interneter Lock?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当C绑定阻止时,Python是否会发布Global Interneter Lock?相关的知识,希望对你有一定的参考价值。
我有一些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。
以上是关于当C绑定阻止时,Python是否会发布Global Interneter Lock?的主要内容,如果未能解决你的问题,请参考以下文章
对于大尺寸的输入数组,C程序崩溃(Segmentation Fault)。如何在不使用static / global / malloc的情况下阻止它?