Python のパフォーマンスに問題があります。私の wsgi アプリケーションでは、クラスの json リストにシリアル化しています。これは私のコードです:
class Foo (object):
def __init__(self, id,object_id, name_id,name,val,val2):
self.id = id
self.object_id = object_id
self.name_id = name_id
self.name = name
self.val = val
self.add_val = val2
def application(environ, start_response):
status = '200 OK'
q = list()
response_headers = [('Content-type', "application/json")]
start_response(status, response_headers)
for i in range(1,50001):
p = Foo(str(i),random.random(), 'col_3','col_4','col_5','col_6')
q.append(p.__dict___)
return json.dumps(q)
返事が遅い(約18秒)。次に、コードを次のように書き直します。
class Foo (object):
def __init__(self, id,object_id, name_id,name,val,val2):
self.id = id
self.object_id = object_id
self.name_id = name_id
self.name = name
self.val = val
self.add_val = val2
def application(environ, start_response):
status = '200 OK'
q = list()
response_headers = [('Content-type', "application/json")]
start_response(status, response_headers)
yield '['
for i in range(1,50001):
p = Foo(str(i),random.random(), 'col_3','col_4','col_5','col_6')
yield json.dumps(p.__dict___)
yield ']'
より高速に実行されます (約 4 ~ 6 秒)。理由がわかりません。なぜこのような結果になったのか説明してもらえますか? PS私はさまざまなjsonライブラリを試しましたが、同じ結果が得られました。