线程锁实现多线程读取mongo 数据库库
2021/5/24 19:24:53
本文主要是介绍线程锁实现多线程读取mongo 数据库库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# encoding:utf-8 import threading import pymongo import redis from bson import ObjectId limit_page = 1000 lock = threading.Lock() class Up: def __init__(self): self.LastId = '' self.startClient = pymongo.MongoClient('192.168.1.50').TianYan.ShangBiao_old self.redisclient = redis.StrictRedis(host='192.168.1.50', db=10) def get_mongo_info(self): lock.acquire() if self.LastId: result = self.startClient.find({"_id": {"$gt": ObjectId(self.LastId)}}).limit(limit_page).sort('_id', 1) else: result = self.startClient.find().limit(limit_page).sort('_id', 1) message = list(result) try: self.LastId = message[-1]['_id'] except: print("数据导出完毕") return message else: return message finally: lock.release() def find_info(self): while True: message = self.get_mongo_info() if message ==[]: break for info in message: company_id = info['company_id'] print(company_id) self.redisclient.sadd('trademark', company_id) def run(self): Threads = [] for _ in range(50): t2 = threading.Thread(target=self.find_info) t2.start() Threads.append(t2) for t in Threads: t.join() if __name__ == '__main__': up = Up() up.run()
这篇关于线程锁实现多线程读取mongo 数据库库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26go.mod的文件内容是什么?-icode9专业技术文章分享
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼