mysql客户端pymysql在python下性能比较

Python022

mysql客户端pymysql在python下性能比较,第1张

python下mysql的客户端主流有三个pymysql, mysqldb 和 mysql connector。很多人在选择客户端时,没有什么要求,都是按照前人或者经验主义选择,但是有真的研究他们之间的性能差别,以及是否符合你的项目需要,或者遇到性能瓶颈时,是否了解他们之间的差别。

本文将从2个维度来分析他们的性能,一个是直接使用,另一个是使用orm辅助使用,来对比三个的性能差别。

mysql的python客户端目前市场主流有三个,分别是 mysqldb (mysqlclient), mysql connector python 和 pymysql。

mysqldb (mysqlclient) 是mysql官方推出基于C库来写mysql连接库,非纯python。之前mysqldb只支持python2,后面mysqlclient在mysqldb的基础上fork来支持python3。

mysql connector for python 是mysql官方推出的纯python实现的连接库。

pymysql 是纯python写的主流连接库。

查询库表返回 100 条记录

测试方法

重复操作100次

测试结果

测试结论

mysqlclient 效果比其他两个快近100%, 毕竟是依赖c的库,性能是有保障的,connector跟pymysql的就不分上下很接近。

测试方法

重复操作100次

测试结果

测试结论

发现connector比其他两个快将近80%多,其余两个效果也很接近。但是这里会发现使用ORM会整体慢1个数据级。

如果是追求极致性能,建议使用mysqlclient,如果想使用ORM,建议使用mysql connector for python, 后面附带源码。

https://github.com/roger777luo/msyql_client_bench.git

优点:

Python是一种代表简单主义思想的语言,阅读一个良好的Python程序就感觉像是在读英语一样,使你能够专注于解决问题而不是去搞明白语言本身

Python底层是用C语言编写的,很多标准库和第三方库也都是用C写的,运行速度非常快

IPython

Notebook使我们更容易使用Python进行数据工作,可以轻松地与同时共享Notebook,无需他们安装任何东西,大大减少组织代码,输出和注释文件的开销

Python是一种通用语言,容易和直观,在学习上会比较容易,可以加快你写一个程序的快速,此外Python测试框架是一个内置的,可以保证你的代码是可重复使用和可靠的

Python还是一个多用途语言,把不同背景的人结合在一起,作为一种常见的、容易理解,大部分程序员都懂,可以很容易地和统计学家沟通,你可以使用一个简单的工具就把你每一个工作伙伴整合起来。

由于它的开源本质,Python已经被移植在许多平台上,比如说:Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS等。

缺点:

很多时候不能将程序连写成一行,如import sysfor i in sys.path:print

i,而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件

Python语法独特,也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱

Python对比C、C++语言运行速度要慢一些。

python语言:

由于其语言语法,简单和多功能性能,python成为开发人员最喜欢的人工智能开发语言。python最打动人心的地方就是便捷性,它可以在Linux、Windows、MAC和Unix等平台上使用,允许用户创建交互式、解释的、模块化、动态、可移植和高级代码。

Python是一种多范式编程语言,支持面向对象,过程式和功能式编程风格。由于其简单的函数库和理想的结构,Python支持神经网络和NLP解决方案的开发。

优点:python有丰富多样的库和工具支持算法测试,而无需实现它们Python的面向对象设计提高了程序员的生产力与Java等语言对比,python开发速度更快。

缺点:使用python编写人工智能程序的程序员很难适应其他语言算法与其他语言对比,python需要在解释器帮助下工作,会拖慢在AI开发中的编译和执行速度。

C++语言:

C++最快的计算机语言,如果你的人工智能项目对于时间特别敏感,C++是很好的选择。它提供更快的执行时间和更快的响应时间。此外C++允许广泛使用算法,在使用统计人工智能技术方面是非常有效的。另外C++支持在开发中重用代码。

优点:C ++适用于机器学习和神经网络。

缺点:多任务处理不佳C ++仅适用于实现特定系统或算法的核心或基础。