@spbpython

Страница 172 из 785
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
v[0] - sum(v[1:])
reduce быстрее на больших списках в pypy

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.

Ладно, всем спасибо. Но, я так понимаю, что опыта решения подобной проблему ни у кого нет?
Почему код который синхронный и написан таким не положить в отдельный сервис скажем виски приложение и работать с ним по http без блокировок на торгадо?

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
нет, но как бы от необходимости сочетания синка и асинка это не избавляет

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
да. оно говно. а вообще этот новый микросервис может точно так же спать на синхронных запросах в базу. этих сервисов потребуется больше, чем нынешных таким образом. и еще сериализовать результаты придется
1. Даже если они будет спать как ты выразился это не мешает другому потоку обработать реквест если говорить про многопоточность. Отвечать ты будешь так быстро как позволит тебе твоя база поэтому число потпотоков/процессов (в зависимости от того что выберешь исходя из того на чем это запускается) будет пропорционально тому количеству запросов которые может твоя база потянуть. 2. Никто не отменял возможность запустить это виски приложение под gevent и не блокироваться вовсе. 3. насколько потеря на сериализацию значительна без профилирования это демагогия, а с учётом что у изначального решение использовался синхронный драйвер из торнадо так вообще смешно об этом говорить

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

Andrey
26.10.2016
21:03:45
тсс

да даже если 20

Vyacheslav
26.10.2016
21:04:13
Потому что выполняя блокирующиеся операции ты будешь блокировать весь gevent
Ты представляешь как работает gevent? Почему пропаченый socket будет блокироваться? Зачем его тогда пачить? :)

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

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

Страница 172 из 785