Есть ли разница в памяти между одиночным и множественным db.put_async () в транзакции? - PullRequest
1 голос
/ 20 декабря 2011
class A(db.Model):
  d = db.DateTimeProperty(auto_now=True)

class B(db.Model):
  c = db.TextProperty()

def store(): #1
  db.put_async(A(key_name=x,parent=key) for x in x_list) #x_list: 5000
  db.put_async(B(c=y,parent=key) for y in y_list) #y_list: 2500*1KB

def store(): #2
  db.put_async([A(key_name=x,parent=key) for x in x_list]+
               [B(c=y,parent=key) for y in y_list])

db.run_in_transaction(store)

Какой store() использует меньше памяти?

Имеют ли значение генераторы или отдельные RPC?Если я не ошибаюсь, run_in_transaction() в основном собирает путы, а затем все равно передает их.

1 Ответ

0 голосов
/ 21 декабря 2011

Поскольку вы делаете асинхронные вызовы и не даете результата, ни один из них ничего не сделает. Если вы используете синхронные вызовы, вариант 1 теоретически будет использовать меньше памяти, но вы должны проверить это, если это важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...