最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年04月29日 09:17:50   作者:劉悅的技術(shù)博客  
Motor是一個異步mongodb driver,支持異步讀寫mongodb。它通常用在基于Tornado的異步web服務(wù)器中。這篇文章主要介紹了基于python3.7利用Motor來異步讀寫Mongodb提高效率,需要的朋友可以參考下

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

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

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

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

我們來測試一下效率,使用傳統(tǒng)pymongo來進行批量讀寫 mongo_test.py:

host = '127.0.0.1'
port = 27017
database = 'LiePin'

import time

start = time.clock()

from pymongo import MongoClient

connection = 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)

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

再使用motor以異步的形式來編寫腳本 motor_test.py

host = '127.0.0.1'
port = 27017
database = 'LiePin'

import time

start = time.clock()

import asyncio
from motor.motor_asyncio import AsyncIOMotorClient

connection = 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ù)

效率由此可見一斑

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

相關(guān)文章

  • 解決pytorch報錯:AssertionError: Invalid device id的問題

    解決pytorch報錯:AssertionError: Invalid device id的問題

    今天小編就為大家分享一篇解決pytorch報錯:AssertionError: Invalid device id的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 深入理解Django中內(nèi)置的用戶認(rèn)證

    深入理解Django中內(nèi)置的用戶認(rèn)證

    Django自帶一個用戶認(rèn)證系統(tǒng),這個系統(tǒng)處理用戶帳戶、組、權(quán)限和基于cookie的會話,下面這篇文章就來給大家介紹了關(guān)于Django中內(nèi)置的用戶認(rèn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • Python使用redis pool的一種單例實現(xiàn)方式

    Python使用redis pool的一種單例實現(xiàn)方式

    這篇文章主要介紹了Python使用redis pool的一種單例實現(xiàn)方式,結(jié)合實例形式分析了Python操作redis模塊實現(xiàn)共享同一個連接池的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • Python numpy 模塊介紹

    Python numpy 模塊介紹

    這篇文章主要介紹了Python numpy 模塊,在motplotlib的學(xué)習(xí)過程中,我們使用最多的就是numpy模塊。下面我們將使用numpy進行創(chuàng)建數(shù)組、切片、索引、廣播等功能實操,需要的朋友可以參考一下
    2022-01-01
  • Python 正則表達(dá)式(?=...)和(?<=...)符號的使用

    Python 正則表達(dá)式(?=...)和(?<=...)符號的使用

    本文主要介紹Python 正則表達(dá)式(?=...)和(?<=...)符號的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Django之無名分組和有名分組的實現(xiàn)

    Django之無名分組和有名分組的實現(xiàn)

    這篇文章主要介紹了Django之無名分組和有名分組,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • python+openCV對視頻進行截取的實現(xiàn)

    python+openCV對視頻進行截取的實現(xiàn)

    這篇文章主要介紹了python+openCV對視頻進行截取的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python+Tkinter制作專屬圖形化界面

    Python+Tkinter制作專屬圖形化界面

    這篇文章主要是帶著大家通過Python Tkinter制作一個屬于自己的GUI圖形化界面,可以用于設(shè)計簽名的哦,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • python 在服務(wù)器上調(diào)用數(shù)據(jù)庫特別慢的解決過程

    python 在服務(wù)器上調(diào)用數(shù)據(jù)庫特別慢的解決過程

    這篇文章主要介紹了python 在服務(wù)器上調(diào)用數(shù)據(jù)庫特別慢的解決過程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • pyside寫ui界面入門示例

    pyside寫ui界面入門示例

    PySide 是一個python綁定的跨平臺GUI Qt庫。目前,支持Python的Qt庫有兩個PyQt和PySide。下面寫一個簡單的hello程序?qū)W習(xí)他的使用方法
    2014-01-01

最新評論

恩施市| 滕州市| 彭阳县| 客服| 汾西县| 南丰县| 嘉禾县| 雷州市| 吴江市| 廊坊市| 蓬安县| 青冈县| 文昌市| 都安| 麟游县| 阳泉市| 鹿泉市| 延川县| 襄汾县| 双鸭山市| 津南区| 资源县| 武宣县| 中山市| 石景山区| 裕民县| 舟曲县| 喀喇| 贡山| 滨海县| 英吉沙县| 彩票| 铜山县| 弥勒县| 剑川县| 皋兰县| 镇宁| 肇庆市| 图们市| 长春市| 萨迦县|