基于python3.7利用Motor来异步读写Mongodb提高效率

如果使用Python进行大规模的海量数据批处理任务,后台使用MongoDB进行数据存储,往往会面临大量的数据库读写。尤其是大量的更新任务不能批量操作,所以我们知道pymongo是一种同步任务机制,相当耗时。

[En]

If you use Python to do large-scale mass data batch tasks, and backend uses mongodb for data storage, it is often faced with a large number of read and write databases. In particular, a large number of update tasks can not be operated in batches, so we know that pymongo is a synchronous task mechanism, which is quite time-consuming.

如果采用多线程、多进程的方案确实有效,但编写麻烦、消耗系统资源大(pymongo还不允许fork线程中共用连接)。这里主要瓶颈在于IO,使用单线程异步操作就会效果很好。

Motor是一个异步mongodb driver,支持异步读写mongodb。它通常用在基于Tornado的异步web服务器中。

Motor同时支持使用asyncio(Python3.4以上标准库)作为异步模型,使用起来十分方便。

我们来测试一下效率,使用传统pymongo来进行批量读写 mongo_test.py:

运行后,我发现它花了大约4秒。

[En]

After running it, I found it took about 4 seconds.

再使用motor以异步的形式来编写脚本 motor_test.py

这项任务只用了大约1秒就完成了。

[En]

The task was completed in only about 1 second.

Original: https://www.cnblogs.com/yunlongaimeng/p/15632845.html
Author: BruceLong
Title: 基于python3.7利用Motor来异步读写Mongodb提高效率

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/6632/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总