2

localhost データベースへの非常に単純な接続を使用しています。

engine = sqlalchemy.create_engine('mysql+mysqlconnector://usr:pwd@localhost/db')
engine = engine.connect()
data = engine.execute('select * from table')

「テーブル」には 500 行あります。次に、「データ」で cProfiler を実行すると、次のようになります。

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
54086  127.261    0.002  127.261    0.002 {method 'recv' of '_socket.socket' objects}

ここでhttp://bugs.python.org/issue3766 TCP_NODELAY を 1 に設定すると解決されるようです。私の質問は、これをどこに設定すればよいですか?

4

1 に答える 1

0

すべてが大丈夫のようです。バグレポートでは、0.02秒かかるrecv呼び出しについて説明していますが、あなたの呼び出しはその1/10です。私の意見では、これはまったく問題ありません。非常に時間がかかる理由は、54086回の呼び出し(1行あたり108回の呼び出し)を行うためです。呼び出し回数が減るようにクエリを書き直すことをお勧めします。あなたのデータベースに何が欲しいか尋ねてください。

于 2013-01-29T16:49:29.243 に答える