mongodb motor 异步操作比同步操作的时间要慢?
代码如下:
同步代码:
怎么破 ?
import asyncio用的时间504s,而用同步的pymongo却只用了412s。
from motor.motor_asyncio import AsyncIOMotorClient
import time
client = AsyncIOMotorClient('10.18.6.46',27001) # 不知道为什么会更加慢 !
start=time.time()
db = client['spider']
doc=db.jd_book
async def run():
result_list = doc.find({})
for item in await result_list.to_list(length=291589):
idx = item.get('_id')
# print(idx)
await doc.update_one({'_id': idx}, {'$set': {'temp_v': 200}})
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
print(f'time used {time.time()-start}')
同步代码:
import pymongo
docs = pymongo.MongoClient('10.18.6.46',27001)['spider']['jd_book']
start=time.time()
for doc in docs.find():
idx=doc.get('_id')
docs.update_one({'_id':idx},{'$set':{'temp_v':300}})
print(f'time used {time.time()-start}')
怎么破 ?
没有找到相关结果
已邀请:
1 个回复
量化投机者 - 雪球同名ID
赞同来自:
异步相比于同步的优势,应该是在有IO之类的调用的时候,更高效地利用CPU时间片,不让CPU空转。
你这两段代码,本身异步省下来地时间片也没其他事情干,还搞了事件循环增加了管理成本