目的是什么LibraryLoader.LoadLibraryPython ctypes中的函数?

2024-10-01 15:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python ctypes,我们可以通过两种方式获得C共享库的实例(例如标准数学),它们具有相同的效果: 在

import ctypes
from ctypes.util import find_library
libm1 = ctypes.CDLL(find_library('m'))
libm2 = ctypes.cdll.LoadLibrary(find_library('m'))

libm1和libm2的引用是不同的(libm1 is libm2=>;False),但在其他方面似乎是等价的。事实上,相当简单的实现使这两个调用等效:

^{pr2}$

从代码中,我们可以看到,通过调用__getattr__,我们可以利用一种缓存机制。实际上,下面的代码也将为您提供诽谤罪公司名称:

libm3 = ctypes.cdll[find_library('m')]

在随后的参考文件中,将按照libm的要求返回。然而,在代码示例中几乎从来没有这样做过——我想是因为它感觉笨拙/不习惯用法。但是LoadLibrary跳过缓存机制,总是返回库的一个新实例。在

那么LibraryLoader类,尤其是LoadLibrary函数的目的是什么呢?在


Tags: 实例代码import标准方式library数学find

热门问题