线程锁实现多线程读取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 数据库库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03如何用Google Gemini和MyScaleDB打造一个基于检索增强生成技术的聊天机器人
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享