我在尝试让我的使用MySQL的简单数据分析程序正常工作时遇到了一个问题。
在我的Windows7电脑上,我使用pyodbc连接到MySQL,程序运行正常。在Snow Leopard上,无法正确安装pyodbc,所以我改用pymysql ...
在最终让pymysql工作后,它运行起来超级慢...
我刚刚通过cProfile在Mac OS Snow Leopard上测试了我的程序,得到了:
26849449个函数调用(26844794个原语调用),在103.196 CPU秒内
..。(总时间超过几秒的唯一方法是recv)
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,但没有成功地安装它们。
发布于 2011-06-09 21:51:42
首先,你应该确保你实际上是在比较相同的东西。
套接字'recv‘方法意味着程序正在等待某些东西,所以如果你的程序实际上在W7和Mac上做同样的事情,这可能意味着网络延迟是不同的。(例如,如果您的Mac使用无线网络,而Windows 7计算机使用有线网络)
要排除这种情况,您可以尝试在Windows机器上比较pyodbc和pymysql。那么你在速度上还会有同样的差异吗?
通常,如果大部分时间都花在'recv‘上,那么问题出在你的应用程序之外(以及pyodbc/pymysql之外)。
https://stackoverflow.com/questions/5879161
复制相似问题