首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pymysql与pyodbc - pymysql是sloooooooooooow

pymysql与pyodbc - pymysql是sloooooooooooow
EN

Stack Overflow用户
提问于 2011-05-04 13:53:16
回答 1查看 2.1K关注 0票数 0

我在尝试让我的使用MySQL的简单数据分析程序正常工作时遇到了一个问题。

在我的Windows7电脑上,我使用pyodbc连接到MySQL,程序运行正常。在Snow Leopard上,无法正确安装pyodbc,所以我改用pymysql ...

在最终让pymysql工作后,它运行起来超级慢...

我刚刚通过cProfile在Mac OS Snow Leopard上测试了我的程序,得到了:

26849449个函数调用(26844794个原语调用),在103.196 CPU秒内

..。(总时间超过几秒的唯一方法是recv)

代码语言:javascript
复制
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   176088   76.960    0.000   76.960    0.000 {method 'recv' of '_socket.socket' objects}

..。

在带有pyodbc的Windows7虚拟机上运行相同的程序(连接到从主机运行的相同MySQL数据库):

将Muncher作为主程序执行。N调用总时间每次调用累积时间每次调用文件名:lineno(函数) 512873个函数调用(508218个原语调用),在6.849 CPU秒内

有人知道这可能是什么原因吗?看起来大部分时间都花在了_socket.socket的'recv‘方法上,根据谷歌的说法,这个方法是接收数据的。这个方法是不是坏了呢?看起来很可笑,它几乎需要15倍的时间。

我想一个更好的问题可能是...在Mac上连接MySQL的最佳方式是什么?到目前为止,我已经尝试了pyodbc和MySQLdb,但没有成功地安装它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-09 21:51:42

首先,你应该确保你实际上是在比较相同的东西。

套接字'recv‘方法意味着程序正在等待某些东西,所以如果你的程序实际上在W7和Mac上做同样的事情,这可能意味着网络延迟是不同的。(例如,如果您的Mac使用无线网络,而Windows 7计算机使用有线网络)

要排除这种情况,您可以尝试在Windows机器上比较pyodbc和pymysql。那么你在速度上还会有同样的差异吗?

通常,如果大部分时间都花在'recv‘上,那么问题出在你的应用程序之外(以及pyodbc/pymysql之外)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5879161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档