gentoo.ru
python
python@conference.gentoo.ru
Понедельник, 9 января 2012< ^ >
maksbotan установил(а) тему: ЯП Python || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck." || Создан список рассылки python@lists.gentoo.org
Конфигурация комнаты
Участники комнаты

GMT+4
[01:31:59] maksbotan вышел(а) из комнаты: Replaced by new connection
[01:32:09] maksbotan вошёл(а) в комнату
[01:32:29] maksbotan вышел(а) из комнаты
[09:51:47] krigstask вышел(а) из комнаты
[09:52:49] krigstask вошёл(а) в комнату
[11:46:33] maksbotan вошёл(а) в комнату
[11:53:23] <krigstask> Гм… А вот и ipython в дереве
[11:53:29] <krigstask> В смысле, 0.12
[11:54:48] <krigstask> Но для крутых вещей хочет zeromq
[11:55:46] <maksbotan> что за крутые вещи?
[11:59:58] <krigstask> Для vim, например
[12:00:08] <krigstask> И всякое межпроцессное взхаимодействие
[12:00:25] <krigstask> И даже морда на qt, хотя она сама по себе не так и крута
[13:23:45] krigstask вышел(а) из комнаты
[13:24:32] krigstask вошёл(а) в комнату
[14:07:43] maksbotan вышел(а) из комнаты
[14:13:04] maksbotan вошёл(а) в комнату
[16:46:26] <maksbotan> krigstask: а ты со sqlite3 работал?
[16:46:42] <maksbotan> ну или с любым db-api в питоне
[17:23:29] <krigstask> А то как же
[17:25:47] <krigstask> С psycopg2, в основном
[17:27:17] <maksbotan> запросы с WHERE IN делал?
[17:27:26] <krigstask> Ага
[17:27:51] <maksbotan> ну как мне сделать запрос select * from table where filed in (?) чтобы на место ? встал кортеж строк?
[17:29:35] <krigstask> Python tuples are converted in a syntax suitable for the SQL IN operator and to represent a composite type:
>>> cur.mogrify("SELECT %s IN %s;", (10, (10, 20, 30)))
'SELECT 10 IN (10, 20, 30);
[17:29:39] <krigstask> http://initd.org/psycopg/docs/usage.html
[17:29:58] <maksbotan> ну это psycopg
[17:30:07] <maksbotan> а я со встроенным sqlite3 работаю :(
[17:30:44] <krigstask> Ну извини
[17:30:59] <krigstask> <maksbotan> ну или с любым db-api в питоне
[17:31:06] <maksbotan> ну может когда на слоника перееду, сделаю так
[17:31:12] <maksbotan> krigstask: я думал оно одинаковое
[17:31:20] <maksbotan> однако sqlite3 туплы не ест
[17:32:06] <krigstask> Гм…
[17:32:09] <krigstask> Попробовать, что ли
[17:32:28] <maksbotan> >>> c.execute("select * from jids where jid in ?", (jids,))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near "?": syntax error
>>> c.execute("select * from jids where jid in (?)", (jids,))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
[17:37:55] <krigstask> http://stackoverflow.com/questions/5766230/select-from-sqlite-table-where-rowid-in-list-using-python-sqlite3-db-api-2-0
[17:38:48] <maksbotan> мда
[17:38:50] <maksbotan> ну хоть как-то
[19:41:45] <maksbotan> krigstask: покидайся в меня чем-нибудь
[19:41:48] <maksbotan> https://github.com/maksbotan/vk_stats/blob/master/flask_main.py#L37
[19:49:49] <krigstask> Ни строчки комментария
[19:49:59] <krigstask> Я тут буду сейчас телепатировать, ага
[20:18:07] <maksbotan> кхм
[20:18:19] <maksbotan> я как всегда :(
[20:50:17] <maksbotan> krigstask: добавил комментиков )
[21:07:00] <krigstask> Молодец
[21:07:08] <maksbotan> ну возможно
[21:07:10] <maksbotan> посмотри код :)
[21:57:58] <krigstask> Тот ещё из тебя комментатор
[21:59:27] <krigstask> Строки 51-54 я бы написал через .get(_, []) или даже .setdefault()
[21:59:49] <krigstask> И то же с 58-61
[22:00:11] <krigstask> Так вообще нормально
[22:00:36] <krigstask> Только за оформление по рукам надо бить
[22:01:00] <krigstask> Комментарии, например. И на 42й * пробелами не отбита
[22:38:29] <maksbotan> няшнота
[22:38:34] <maksbotan>         for jid, name in jids_r:                                                
            jids.setdefault(jid, []).append(name)
[22:38:37] <maksbotan> krigstask: спасибо
[22:39:42] <lk4d4> это что у вас такое?
[22:40:10] <maksbotan> это я вчера тебя спрашивал, помнишь?
[22:40:18] <maksbotan>         for date, entry in sorted(stats_r.items()):                            
            stats.append((date, entry))  
[22:40:21] <maksbotan> во я придурок :D
[22:40:31] <lk4d4> а, да
[22:42:07] <lk4d4> а вот с этим setdefault
[22:42:13] <lk4d4> как бы лишнее действие получается
[22:42:18] <lk4d4> красиво кончно
[22:43:55] <lk4d4> но список-то создается
[22:44:02] <lk4d4> еще и элемент в него добавляется
[22:45:07] <maksbotan> кстати что будет быстрее
[22:45:20] <maksbotan> sorted(d.items()) или sorted(d.iteritems())?
[22:46:24] <lk4d4> по идее d.items()
[22:46:29] <lk4d4> но памяти больше сожрет
[22:46:39] <maksbotan> krigstask: а ты что скажешь?
[22:49:38] <krigstask> С чего это items() будет медленнее?
[22:49:47] <krigstask> Тьфу, то есть быстрее
[22:49:56] <lk4d4> ну вот ты нам и поясни
[22:50:00] <maksbotan> ага
[22:50:16] <krigstask> lk4d4: а почему лишнее действие?
[22:50:18] <lk4d4> в доке вообще написано что-то про это
[22:50:54] <lk4d4> krigstask: а вот это кстати вопрос
[22:51:06] <lk4d4> jids.setdefault(jid, []).append(name)
[22:51:11] <lk4d4> как я понял из доки
[22:51:45] <lk4d4> а не, все правильно
[22:51:49] <lk4d4> я плохо читаю доку
[22:53:28] <krigstask> Читай доку хорошо!
[22:53:38] <maksbotan> krigstask: ну так что скажешь? :)
[22:53:53] <krigstask> Об чём?
[22:54:11] <lk4d4> одинаково будет?
[22:54:24] <maksbotan> krigstask: о items() и iteritems() в sorted
[22:55:00] <krigstask> Я бы в любом случае использовал items()
[22:55:06] <lk4d4> вот ты жук
[22:55:07] <krigstask> А вообще хрен знает
[22:55:08] <lk4d4> почему?
[22:55:25] <lk4d4> давай, ботан, через таймит померяй
[22:55:38] <maksbotan> ну блин =)
[22:58:14] <krigstask> Потому что в третьем iteritems() выкинут
[22:58:17] <lk4d4> в общем не очень понятно что там в доке
[22:58:22] <lk4d4> ну тем более
[22:58:54] <lk4d4> хотя вот зачем, может неохота мне полную копию словаря
[22:59:12] <krigstask> items() в третьем выдаёт итераторы
[22:59:16] <krigstask> И values()
[22:59:23] <krigstask> И keys()
[22:59:23] <maksbotan> отлично чо
[22:59:30] <krigstask> Ботан одобряэ
[22:59:55] <lk4d4> ну тогда конечно
[23:00:03] <lk4d4> он какие-то view на самом деле выдает
[23:00:46] <maksbotan> >>> timeit.timeit("sorted(d.items())", "d = {512: 263, 516: 544, 519: 917, 525: 164, 18: 886, 532: 972, 536: 740, 26: 925, 27: 314, 28: 920, 545: 366, 548: 425, 50: 374, 570: 546, 60: 419, 61: 65, 587: 686, 85: 876, 87: 305, 610: 890, 102: 823, 626: 818, 633: 948, 639: 554, 128: 596, 641: 409, 193: 987, 24: 303, 670: 178, 159: 187, 162: 347, 163: 817, 677: 598, 678: 517, 540: 887, 687: 29, 692: 388, 181: 602, 183: 894, 189: 874, 192: 407, 705: 999, 195: 249, 711: 793, 201: 697, 205: 122, 721: 735, 221: 843, 738: 962, 230: 466, 244: 734, 247: 814, 780: 343, 269: 533, 785: 897, 791: 934, 793: 349, 284: 916, 289: 710, 805: 144, 300: 314, 816: 0, 820: 961, 314: 880, 831: 822, 350: 223, 868: 928, 872: 502, 370: 379, 374: 362, 382: 39, 897: 709, 389: 390, 390: 132, 904: 10, 396: 816, 399: 127, 924: 404, 929: 764, 426: 941, 428: 316, 158: 858, 440: 210, 441: 264, 971: 940, 467: 86, 469: 656, 473: 651, 480: 758, 488: 111, 494: 592, 801: 620, 511: 671}", number=10000)
1.0470201969146729
>>> timeit.timeit("sorted(d.iteritems())", "d = {512: 263, 516: 544, 519: 917, 525: 164, 18: 886, 532: 972, 536: 740, 26: 925, 27: 314, 28: 920, 545: 366, 548: 425, 50: 374, 570: 546, 60: 419, 61: 65, 587: 686, 85: 876, 87: 305, 610: 890, 102: 823, 626: 818, 633: 948, 639: 554, 128: 596, 641: 409, 193: 987, 24: 303, 670: 178, 159: 187, 162: 347, 163: 817, 677: 598, 678: 517, 540: 887, 687: 29, 692: 388, 181: 602, 183: 894, 189: 874, 192: 407, 705: 999, 195: 249, 711: 793, 201: 697, 205: 122, 721: 735, 221: 843, 738: 962, 230: 466, 244: 734, 247: 814, 780: 343, 269: 533, 785: 897, 791: 934, 793: 349, 284: 916, 289: 710, 805: 144, 300: 314, 816: 0, 820: 961, 314: 880, 831: 822, 350: 223, 868: 928, 872: 502, 370: 379, 374: 362, 382: 39, 897: 709, 389: 390, 390: 132, 904: 10, 396: 816, 399: 127, 924: 404, 929: 764, 426: 941, 428: 316, 158: 858, 440: 210, 441: 264, 971: 940, 467: 86, 469: 656, 473: 651, 480: 758, 488: 111, 494: 592, 801: 620, 511: 671}", number=10000)
0.8731000423431396
[23:00:51] <maksbotan> вот вам
[23:01:51] <lk4d4> ну ка в третьем протестируй
[23:02:02] <lk4d4> с items() и iter(dict.items())
[23:02:17] <maksbotan> поздно
[23:02:26] <lk4d4> ловкач
[23:03:01] <lk4d4> вот в 3 тема в том, что items() меняется вместе со словарем
[23:03:10] <maksbotan> то есть?
[23:03:39] <lk4d4> ну то есть изменил ты что-то в словаре, а в items() оно тоже меняется
[23:03:44] <maksbotan> а
[23:03:47] <maksbotan> ну и хорошо
[23:03:56] <maksbotan> https://github.com/maksbotan/vk_stats/commit/7969e9dce9466e13651277f28cbde568b3c261f9 во
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!