为什么 pymongo 集合定义会增加线程数



当我以这种方式定义pymongo集合时,线程数将增加2:

import threading
print threading.activeCount()

def db_bigadevs():
    from pymongo import MongoClient
    con_bigadevs = MongoClient()
    return con_bigadevs['bigadevs']

class collections:
    print 'A1 %s' % threading.activeCount()
    col_webs = db_bigadevs()['webs']
    print 'A2 %s' % threading.activeCount()

输出为:

1
A1 1
A2 3

每个MongoClient都有一个用于定期清理任务的后台线程,以及每个服务器的后台线程,用于监视MongoDB服务器的状态。因此,如果您创建默认的MongoClient,它将连接到localhost:27017上的一台服务器,总共生成两个线程。

这里有一个简短的解释,其中常见问题解答说"MongoClient生成多个线程来运行后台任务,例如监视连接的服务器。我在这里写了一个关于 PyMongo 使用线程的非常详尽的解释,主要针对未来的 PyMongo 维护者。

最新更新