与基本搜索相比,LDAP3读卡器光标内存使用率较高

2024-03-29 02:19:28 发布

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

我正在为Python学习ldap3(以及学习Python…)

我尝试使用ldap3提取一些记录,在将结果放入另一个数据库之前,对它们进行迭代并执行一些工作。在

我遇到的问题是,当使用两种不同的数据获取方法时,我的性能会有显著的不同。。。在

使用基本搜索http://ldap3.readthedocs.io/tutorial_searches.html

from ldap3 import Server, Connection, ObjectDef, AttrDef, Reader, ALL

server = Server('ldap.xxxx.xxx.xxx', use_ssl=True, get_info=ALL)
conn = Connection(server, 'cn=username,cn=applications,dc=xxx,dc=xxx', 'password',
                  auto_bind=True, check_names=True)

conn.search('cn=people, dc=xxx, dc=xxx','(HomeCity=nowhere)')

#end

它以最小的内存使用率执行得非常快,大约43000个结果小于200MB

{但是使用游标^

^{pr2}$

耗时较长,大约使用2GB

两者的检索结果完全相同。 使用

for entry in conn.entries
    print(sys.getsizeof(entry))

或者

for entry in r
    print(sys.getsizeof(entry))

返回相同大小的对象

我不知道是什么原因导致一个方法比另一个方法使用更多的资源,也不知道如何在处理过程中释放资源

编辑1:好的,我认为第一种方法,实际上我没有引入任何属性,这就是为什么它没有真正使用任何内存。。(即将进行更多测试)


Tags: 方法内存intrueforserverallconnection