
Roman
26.10.2016
14:00:08
да и в pypy тоже
я сравнивал варианты с map - всё равно компрехеншены быстрее

Serge
26.10.2016
14:07:51
да в том коде воообще не понятно зачем так...
что-то типа v[0] - sum(v[1:]) например, ну так, из головы

Google

Zart
26.10.2016
14:15:14
да не, код там очевидный имхо
человек с помощью мапа и лямбды меняет знак у всех элементов со второго, впидарасивает первый элемент на первое место и сует это всё в сум()
в итоге выходит a-b-c-d-e...
редьюс с вычитанием просто просится на замену

Serge
26.10.2016
14:15:35
v[0] - sum(v[1:])
это то что просится

Zart
26.10.2016
14:15:50
можно и так

Serge
26.10.2016
14:16:04
и вывать руки обоим, за оригинал и за редьюс
ну арифметика 2-й класс
при этом, насколко я понимаю, редьюс умрет на списке из одного элемента
остальные два варианта на пустом списке
а, не

Zart
26.10.2016
14:18:47
>>> import operator
>>> reduce(operator.sub, [0])
0
все три варианта помрут на пустом 8)))

Serge
26.10.2016
14:19:09
1 поставь

Google

Serge
26.10.2016
14:19:15
[1]

Zart
26.10.2016
14:19:24
>>> reduce(operator.sub, [1])
1
не, редьюс вернет как есть

Serge
26.10.2016
14:19:54
хм...

Zart
26.10.2016
14:20:04
а если вписать 0 третьим аргументом, то будет работать и на пустом списке
>>> l = []
>>> l[0] - sum(l[1:])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> reduce(operator.sub, l, 0)
0

GNU/Docker
26.10.2016
14:20:55
ага.
редьюс безопаснее)
кстати
каким способом лучше всего брать первый элемент в списке, если может прийти пустой список или список из одного элемента?

Roman
26.10.2016
14:23:24

GNU/Docker
26.10.2016
14:23:30
я сегодня увидел next(iter(filter(...)), 0)
ну, второй питон, естессн.

Serge
26.10.2016
14:24:05
ну, next да
https://docs.python.org/3/library/functools.html?highlight=reduce#functools.singledispatch
ой

Zart
26.10.2016
14:24:47
list.pop(0) или next(l). оба кинут исключение на пустом, поэтому надо комбинировать с тернарным

GNU/Docker
26.10.2016
14:25:12
next(l, 0) не кинет.

Zart
26.10.2016
14:25:32
а, у некста дефолт таки есть. у лист.попа увы нету

GNU/Docker
26.10.2016
14:25:40
угу

Zart
26.10.2016
14:25:42
а у дикт.поп есть 8\

Google

GNU/Docker
26.10.2016
14:25:57
Я чего и спорил то с овнером кода
тоже думал есть

Roman
26.10.2016
14:27:17
100000 loops, best of 3: 66.4 µs per loop для reduce(operator.sub, v)
100000 loops, best of 3: 114 µs per loop для v[0] - sum(v[1?)

GNU/Docker
26.10.2016
14:27:33
У листа есть pop

Serge
26.10.2016
14:27:40

GNU/Docker
26.10.2016
14:27:44
но у его pop нет default

Serge
26.10.2016
14:28:04
более того, он модифицирует список

GNU/Docker
26.10.2016
14:28:33
ну что поделать
массив тогда уж.

Serge
26.10.2016
14:28:48
а?
array? :)

GNU/Docker
26.10.2016
14:28:58
Потому что это не список, да)

Serge
26.10.2016
14:29:14
это спорное утверждение

GNU/Docker
26.10.2016
14:29:26
ну ну

Serge
26.10.2016
14:29:31
трудности перевода и оригинальной терминологии одноврменно

GNU/Docker
26.10.2016
14:33:06
Скажи лучше, где посмотреть клёвое использование штук из functools?)
типа того синглдиспатч что ты скинул
выглядит интересно, но ничего придумать не получилось(

Serge
26.10.2016
14:34:00
Ну, можно поискать по github
Я бы сказал, что это было бы полезно для перегрузки операторов для своего класса, для разных типов с ним

Google

Zart
26.10.2016
14:34:57
да обычно это хорошо ложится на специфические задачки

Serge
26.10.2016
14:35:12
Но, оно по первому аргументу, так что только через костыли

GNU/Docker
26.10.2016
14:35:25
ой
только по первому

Zart
26.10.2016
14:35:59
я думал там по полной сигнатуре было

Serge
26.10.2016
14:36:15
Открываем, читаем, по ссылке написано

Zart
26.10.2016
14:36:36
да я пеп читал когда он вышел

Serge
26.10.2016
14:37:15
Ну вот, функция по доке вот так работает

Zart
26.10.2016
14:38:06
ZCA покошернее будет таки

Admin
ERROR: S client not available

Roman
26.10.2016
14:39:21

Serge
26.10.2016
14:41:50
так там небось тот же isinstance

GNU/Docker
26.10.2016
14:42:11
https://github.com/igrishaev/f#generics

Dmitry
26.10.2016
16:15:15
если кому интересно то сейчас начнётся трансляция
https://www.youtube.com/watch?v=HqKe_tu4sFU

Vitali K.
26.10.2016
16:22:05
кафушки
смотрю

Vyacheslav
26.10.2016
18:27:24
Also, the GIL is always released when doing I/O.

Zart
26.10.2016
18:33:52
мда

Google

Vyacheslav
26.10.2016
18:34:21
Чтобы это значило?

GNU/Docker
26.10.2016
18:38:59
Тшшшш
В тырнети кто-то не прав.

Zart
26.10.2016
18:41:10
вот так люди и изобретают микросервисы

Roman
26.10.2016
18:44:33

Zart
26.10.2016
18:51:43
нет, но как бы от необходимости сочетания синка и асинка это не избавляет

Vitali K.
26.10.2016
19:09:27

Vyacheslav
26.10.2016
19:10:05

Zart
26.10.2016
19:12:47

Vitali K.
26.10.2016
19:13:10

Andrey
26.10.2016
20:20:19

Vyacheslav
26.10.2016
20:54:21

Roman
26.10.2016
21:01:08


Andrey
26.10.2016
21:01:18
если у тебя 50 процессов торнады 80% времени спали и ждали базу, то сколько процессов твоей замечательной прослойки понадобится? и сколько процессов можно будет оставить от торнады? Улучшится ли утилизация процессора? Ты каждый запрос к базе (да еще и через sqlalchemy) превратишь в отдельный http эндпоинт? сколько у тебя времени это займет? сколько багов будет в сериализации?

Roman
26.10.2016
21:01:52
Потому что выполняя блокирующиеся операции ты будешь блокировать весь gevent

Andrey
26.10.2016
21:03:45
тсс
да даже если 20

Vyacheslav
26.10.2016
21:04:13

Roman
26.10.2016
21:04:29

Vyacheslav
26.10.2016
21:05:10
Ну когда ты запрос в базу делаешь ты с каким примитивном работаешь ?

Andrey
26.10.2016
21:06:12
внизу может быть асинхронный сокет. но если поверх него синхронный драйвер, то он будет ждать