<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

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

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

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

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

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

       

          我們來測(cè)試一下效率,使用傳統(tǒng)pymongo來進(jìn)行批量讀寫 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)

       運(yùn)行一下,發(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ù)

      posted @ 2021-12-02 13:48  BruceLong  閱讀(311)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 久久久无码一区二区三区| 四虎成人高清永久免费看| 亚洲日韩性欧美中文字幕| 熟妇人妻系列aⅴ无码专区友真希| 在线 欧美 中文 亚洲 精品| 偷窥少妇久久久久久久久| 国产精品色内内在线播放| 营山县| 国产日韩乱码精品一区二区| 亚洲黄色第一页在线观看| 亚洲第一无码专区天堂| 久爱www人成免费网站| 亚洲精品久久一区二区三区四区| 日本精品不卡一二三区| 熟女少妇精品一区二区| 伊人久久久av老熟妇色| 国产av一区二区三区精品| 天堂网国产| 免费AV片在线观看网址| 国产亚洲精品久久久久久久久 | 制服 丝袜 亚洲 中文 综合| 亚洲中文字幕第二十三页| 麻豆亚洲精品一区二区| 欧美性色黄大片| 免费天堂无码人妻成人av电影| 国内精品免费久久久久电影院97| 亚洲午夜香蕉久久精品| 日韩av在线不卡一区二区三区| 色道久久综合亚洲精品蜜桃| 成人午夜电影福利免费| 日本熟妇XXXX潮喷视频| 人成午夜免费视频无码| 大地资源高清播放在线观看| 成人亚洲av免费在线| 97se亚洲综合自在线| 国产免费踩踏调教视频| 南陵县| 99久久精品久久久久久婷婷| 久久综合九色综合97婷婷 | 免费国产一区二区不卡| 人妻夜夜爽天天爽三区麻豆av|