我有一些进行大量磁盘访问的 C 绑定(bind)。
当 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/