MySQL を使用する単純なデータ分析プログラムを正しく動作させようとして問題が発生しました。
私の Windows 7 コンピューターでは pyodbc を使用しており、pyodbc を使用して MySQL に接続すると、プログラムは正常に動作します。Snow Leopard では、pyodbc を正しくインストールできなかったため、代わりに pymysql を使用しています...
最終的にpymysqlが動作するようになった後、実行速度が非常に遅くなります...
テストを行ったところ、cProfile を介して Mac OS Snow Leopard でプログラムを実行したところ、次の結果が得られました。
103.196 CPU 秒で 26849449 回の関数呼び出し (26844794 回のプリミティブ呼び出し)
... (合計時間が数秒を超える唯一のメソッドは 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 を使用して Windows 7 仮想マシンで同じプログラムを実行する (ホスト コンピューターから実行されている同じ MySQL データベースに接続されている):
Muncher をメイン プログラムとして実行します。ncalls tottime percall cumtime percall filename:lineno(function) 512873 関数呼び出し (508218 プリミティブ呼び出し) 6.849 CPU 秒
誰がこれを引き起こしているのか知っていますか? その時間のほとんどは、_socket.socket の「recv」メソッドに費やされたようです。Google によれば、これはデータを受信するものです。その方法は壊れていますか?ばかげているように思えますが、ほぼ 15 倍の時間がかかります。
Mac OS で MySQL に接続する最良の方法は何ですか? これまでのところ、pyodbc と MySQLdb を試してみましたが、うまくインストールできませんでした。