如何获取pymongo活动线程数?
How to get the number of pymongo active threads?
我有一个多线程程序,在主程序和每个线程中使用 pymongo。由于pymongo会为每个连接创建2个线程,我如何找到pymongo创建的线程数?
threading.activeCount()
我可以用上面的命令得到总的活动线程,但我不知道有多少属于 pymongo。
MongoDBshell中有命令:db.serverStatus()
.
它提供包括连接在内的服务器状态。您可以在 Python 代码中将其与 pymongo
一起使用:
con = db.command("serverStatus")["connections"];
Current_con = con["current"] #Int Value.
注意 con
是一个 JSON 对象。
PyMongo 不会为每个连接创建两个线程。每个 MongoClient 都有一个后台线程用于定期清理任务,每个服务器都有一个后台线程用于监视 MongoDB 服务器的状态。因此,如果您创建默认的 MongoClient,它会连接到 localhost:27017 上的一台服务器,总共产生两个线程:
c = MongoClient("mongodb://localhost")
如果你这样做:
c = MongoClient("mongodb://host1,host2/?replicaSet=my_replica_set")
然后 PyMongo 将发现副本集成员并生成线程来监视它们,直到它发现整个副本集。因此,如果您设置了 three-member,PyMongo 会生成四个线程。
简短的回答,要知道 PyMongo 已经启动的线程数,那么你应该定期执行这个:
len(c.nodes) + 1
这是 PyMongo 知道的服务器数量,加上一个用于清理线程。
A brief explanation is here, where the FAQ says "MongoClient spawns multiple threads to run background tasks such as monitoring connected servers." I also wrote a very thorough explanation of PyMongo's use of threads here,主要面向未来的 PyMongo 维护者。
我有一个多线程程序,在主程序和每个线程中使用 pymongo。由于pymongo会为每个连接创建2个线程,我如何找到pymongo创建的线程数?
threading.activeCount()
我可以用上面的命令得到总的活动线程,但我不知道有多少属于 pymongo。
MongoDBshell中有命令:db.serverStatus()
.
它提供包括连接在内的服务器状态。您可以在 Python 代码中将其与 pymongo
一起使用:
con = db.command("serverStatus")["connections"];
Current_con = con["current"] #Int Value.
注意 con
是一个 JSON 对象。
PyMongo 不会为每个连接创建两个线程。每个 MongoClient 都有一个后台线程用于定期清理任务,每个服务器都有一个后台线程用于监视 MongoDB 服务器的状态。因此,如果您创建默认的 MongoClient,它会连接到 localhost:27017 上的一台服务器,总共产生两个线程:
c = MongoClient("mongodb://localhost")
如果你这样做:
c = MongoClient("mongodb://host1,host2/?replicaSet=my_replica_set")
然后 PyMongo 将发现副本集成员并生成线程来监视它们,直到它发现整个副本集。因此,如果您设置了 three-member,PyMongo 会生成四个线程。
简短的回答,要知道 PyMongo 已经启动的线程数,那么你应该定期执行这个:
len(c.nodes) + 1
这是 PyMongo 知道的服务器数量,加上一个用于清理线程。
A brief explanation is here, where the FAQ says "MongoClient spawns multiple threads to run background tasks such as monitoring connected servers." I also wrote a very thorough explanation of PyMongo's use of threads here,主要面向未来的 PyMongo 维护者。