久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)

瀏覽:35日期:2022-07-27 09:26:26

如果使用Python做大型海量數(shù)據(jù)批量任務(wù)時(shí),并且backend用mongodb做數(shù)據(jù)儲(chǔ)存時(shí),常常面臨大量讀寫(xiě)數(shù)據(jù)庫(kù)的情況。尤其是大量更新任務(wù),由于不能批量操作,我們知道pymongo是同步任務(wù)機(jī)制,相當(dāng)耗時(shí)。

如果采用多線(xiàn)程、多進(jìn)程的方案確實(shí)有效,但編寫(xiě)麻煩、消耗系統(tǒng)資源大(pymongo還不允許fork線(xiàn)程中共用連接)。這里主要瓶頸在于IO,使用單線(xiàn)程異步操作就會(huì)效果很好。

Motor是一個(gè)異步mongodb driver,支持異步讀寫(xiě)mongodb。它通常用在基于Tornado的異步web服務(wù)器中。

Motor同時(shí)支持使用asyncio(Python3.4以上標(biāo)準(zhǔn)庫(kù))作為異步模型,使用起來(lái)十分方便。

我們來(lái)測(cè)試一下效率,使用傳統(tǒng)pymongo來(lái)進(jìn)行批量讀寫(xiě) mongo_test.py:

host = ’127.0.0.1’port = 27017database = ’LiePin’import timestart = time.clock()from pymongo import MongoClientconnection = MongoClient( host, port)db = connection[database]for doc in db.LiePin_Analysis1.find({}, [’_id’, ’JobTitle’, ’is_end’]): db.LiePin_Analysis1.update_one({’_id’: doc.get(’_id’)}, { ’$set’: { ’is_end’: 1 } })elapsed = (time.clock() - start)print('Time used:',elapsed)

運(yùn)行一下,發(fā)現(xiàn)用了4秒左右

基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)

再使用motor以異步的形式來(lái)編寫(xiě)腳本 motor_test.py

host = ’127.0.0.1’port = 27017database = ’LiePin’import timestart = time.clock()import asynciofrom motor.motor_asyncio import AsyncIOMotorClientconnection = AsyncIOMotorClient( host, port)db = connection[database]async def run(): async for doc in db.LiePin_Analysis1.find({}, [’_id’, ’JobTitle’, ’is_end’]): db.LiePin_Analysis1.update_one({’_id’: doc.get(’_id’)}, {’$set’: {’is_end’:0}})asyncio.get_event_loop().run_until_complete(run())elapsed = (time.clock() - start)print('Time used:',elapsed)

僅僅1秒左右就完成了任務(wù)

基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)

效率由此可見(jiàn)一斑

到此這篇關(guān)于基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)的文章就介紹到這了,更多相關(guān)python異步讀寫(xiě)Mongodb內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 安泽县| 营口市| 洱源县| 连江县| 郁南县| 台南县| 清丰县| 双流县| 普兰县| 攀枝花市| 东阿县| 界首市| 铁力市| 平遥县| 麻江县| 酒泉市| 韶山市| 吕梁市| 金川县| 诸暨市| SHOW| 彭州市| 杨浦区| 竹山县| 绥棱县| 宜城市| 乌恰县| 修武县| 潞西市| 合水县| 潼关县| 太湖县| 庆云县| 九龙县| 新丰县| 治县。| 泉州市| 赣榆县| 文成县| 东港市| 香河县|