1

どこからともなく奇妙なオーバーヘッドが発生しています。Python スクリプトを実行し、SQLAlchemy を使用していくつかの SQL クエリを作成しています。これが私の問題です:

def _create_connection(name):
    connection = get_connection(name)
    cstring = "mysql+mysqldb://login:passwd@host/database?charset=utf8"
    return create_engine(cstring)

def _get_table(engine, table):
    metadata = MetaData(engine)
    return Table(table, metadata, autoload=True)

class A(object):
    def requests_statuses(self, user_id):
        friendship_request_t = _get_table(self._db, "friendship_request")
        user_t = _get_table(self._db, "user")

        a = datetime.now()

        s = select([user_t.c.user_id, friendship_request_t.c.status],
                   from_obj=[friendship_request_t.join(
                    user_t,
                    friendship_request_t.c.user_id_a==user_t.c.user_id)]).\
            where(friendship_request_t.c.user_id_b==bindparam('fr_user_id_b'))
        results = self._db.execute(s, fr_user_id_b=user_id).fetchall()

        b = datetime.now()

        print "interval: " + unicode(b - a)

        return results

class B(object):
    def friend_requests_statuses(self):
        a_obj = A()

        print "begin: " + unicode(datetime.now())
        results = a_obj.requests_statuses(self.id)
        print "end  : " + unicode(datetime.now())

このプログラムを実行すると:

b_obj = B()
b.friend_requests_statuses()

私はこの出力を持っています:

begin: 2013-02-07 18:57:40.058834
interval: 0:00:00.001852
end  : 2013-02-07 18:57:40.076525

16ms のオーバーヘッドがあります。SQL クエリの実行には 1.8 ミリ秒しかかかりませんでした。

誰か助けてくれませんか?

A.requests_statuses メソッドを終了するときのガベージ コレクションから「オーバーヘッド」が発生する可能性はありますか?

4

0 に答える 0