
dmks
25.06.2016
18:53:46

Roman
25.06.2016
18:53:50
https://www.reddit.com/r/Python/comments/4omh3u/annoy_rpython_in_one_sentence/

dmks
25.06.2016
18:54:27
I've just started a new Python2 project :D

Zart
25.06.2016
18:54:36
а что тут такого?

Google

Zart
25.06.2016
18:54:47
это бесит только хипстеров

dmks
25.06.2016
18:55:08

Марк
25.06.2016
18:55:32

Denis
25.06.2016
18:56:45
Мой ответ был опубликован под лицензией GNU GPL, он не обязан его удалять

Zart
25.06.2016
18:57:10
охуеть теперь
строка из одного open() - гпл

dmks
25.06.2016
18:57:25

Denis
25.06.2016
18:57:40
Томми?

dmks
25.06.2016
18:57:59
Томми?
Это из фильма Гая Риччи, там где цыгане были

Марк
25.06.2016
18:58:09

dmks
25.06.2016
18:58:31

Denis
25.06.2016
18:58:46

Марк
25.06.2016
18:59:06
Погуглят, поспрашивают, подумают.

Google

Denis
25.06.2016
18:59:34
Погуглят == прочитают ответ

Zart
25.06.2016
18:59:50
нехуй учить детей манкипатчингу
здесь вам не руби

Denis
25.06.2016
19:00:32
На олимпиадах это самый удобный способ для вывода в файл

Roman
25.06.2016
19:01:06
манкипатчинг всякий раз наводит на мысль о баге в дизайне

Zart
25.06.2016
19:01:06
какие дебильные олимпиады нынче

Denis
25.06.2016
19:01:53
Они всегда такими были

Марк
25.06.2016
19:02:20
Погуглят == прочитают ответ
А тут просто зафорвардят на тупом. И всем остальным станет не интересно. Это как с днем регулярок. Пацаны свои регулярки замазывали.

Roman
25.06.2016
19:02:36
хз, у нас на олимпиадах за работающее, но плохое решение не хвалили

Denis
25.06.2016
19:02:46

Zart
25.06.2016
19:02:50
перехват на уровне sys.stdout показывает одну из нескольких вещей:
1) единственный способ перехватить вывод от либы/кода, не прибегая к более сильному колдунству
2) использование для рекодировки в некоторых случаях
3) кому-то нехуй делать

Denis
25.06.2016
19:03:06

Roman
25.06.2016
19:03:20
так это не олимпиада

Zart
25.06.2016
19:03:43
это специальная олимпиада, похоже

Denis
25.06.2016
19:04:03
Про спортивное программирование слышали?

Roman
25.06.2016
19:04:20
скорее кружок по замеру электронных пенисов

Марк
25.06.2016
19:04:44
Я помню, были задачи, которые либо знаешь ответ, либо хуй решишь
А были такие, что глянул на решение "ох, ебать я тупой"

Roman
25.06.2016
19:05:09
судя по вопросу, спортивное программирование ведёт к "хуяк-хуяк и в продакшн"

Denis
25.06.2016
19:05:33
Оно скорее ведет к знанию алгоритмов и структур данных

Google

Roman
25.06.2016
19:05:42
о.О

Zart
25.06.2016
19:05:51
самое смешное что для юникода второй питон лучше третьего

Roman
25.06.2016
19:06:00
=)
Как спортивное программирование ведёт к знанию _алгоритмов_ и _структур данных_, когда код никто не смотрит?

Zart
25.06.2016
19:06:57
print "ответ" # спортивно, молодёжно, олимпиадно

Denis
25.06.2016
19:07:05
Потому что ты не сможешь решить задачу, если не знаешь алгоритм, нужный для ее решения

Марк
25.06.2016
19:09:46
О, вон и поциент подоспел, а вы тут "надо сразу ответ пилить"

Zart
25.06.2016
19:10:01

Марк
25.06.2016
19:10:07
86 logfd = os.open( logfile , os.O_WRONLY | os.O_APPEND | os.O_CREAT, 0644);
87 nullfd = os.open("/dev/null", os.O_RDONLY);
88 os.dup2(nullfd, sys.stdin.fileno())
89 os.dup2(logfd, sys.stdout.fileno())
90 os.dup2(logfd, sys.stderr.fileno())
91 os.close(nullfd)
92 os.close(logfd)
93 os.setsid()
Вот как-то так короч
Жесть какая

Denis
25.06.2016
19:10:38

Zart
25.06.2016
19:10:44
ну да... сложным путем чувак поехал

Zart
25.06.2016
19:12:38

Марк
25.06.2016
19:13:23

Zart
25.06.2016
19:13:39
неа
для демонизации надо довольно дохера проделать
чдир в /
форк-сетсид-форк
возможно закрыть лишнее и поебаццо с сигналами

Марк
25.06.2016
19:16:49
Для примитивной демонизации это типовая конструкция. Только в в /dev/null нужно всё воткнуть. То, что сделал, это какая-то попытка адаптации типового кода инициализации демона

Zart
25.06.2016
19:17:05
нет, блядь
вот все те дуп2 - это попытка на питоне написать аналог из С для "cmd1 | cmd2"
к демонизации это не имеет никакого отношения

Google

Roman
25.06.2016
19:19:36
https://scontent.xx.fbcdn.net/t31.0-8/13502654_1400315466645703_7542267329528063690_o.jpg

Zart
25.06.2016
19:21:02
гм. я прохлопал момент когда к пипу прикрутили -c

Марк
25.06.2016
19:21:47

Zart
25.06.2016
19:22:01
НЕТ, третий раз повторяю
ты опять упоролся
если для тебя дуп2 и форк/сетсид одно и то же, то пора к окулисту наверное

Roman
25.06.2016
19:22:55
я таки гляжу тут упоротость процветает ))

Zart
25.06.2016
19:24:28
"you can't build a large clean code base without static typing"
а ну-ка, попробую-ка я завести плоньку

Марк
25.06.2016
19:25:34
87 nullfd = os.open("/dev/null", os.O_RDONLY);
88 os.dup2(nullfd, sys.stdin.fileno())
89 os.dup2(logfd, sys.stdout.fileno())
90 os.dup2(logfd, sys.stderr.fileno())

Admin
ERROR: S client not available

Alex
25.06.2016
19:25:34
Что быстрее?
full = ' '.join([first, last]) – 7
??????? 78%
full = '{} {}'.format(first, last) – 2
?? 22%
? 9 people voted so far.

Zart
25.06.2016
19:25:36
открывание лог файла уже стало демонизацией?

Марк
25.06.2016
19:26:16
Блин. Нет

Roman
25.06.2016
19:26:30
марк, django гуру?

Zart
25.06.2016
19:27:42
full = first + ' ' + last
но японцы против

Марк
25.06.2016
19:28:16
Я пишу о том, что тут копипаста с процесс демонизации с собственными изменениями. Иначе бы он не хуярил в файл stderr

Zart
25.06.2016
19:28:59
а тебе уже три раза пишу что это код пайпов, который относится к джоб контролу, и никакого отношения к демонизации не имеет

Alex
25.06.2016
19:29:07

Zart
25.06.2016
19:29:50
да, в разы
потому что пара тривиальных операций на стеке, а те варианты требуют вызова функций и методов

Google

Alex
25.06.2016
19:30:22
а по тем?

Zart
25.06.2016
19:30:37
навскидку не знаю, а проверять влом
думаю формат будет слегка шустрее

Alex
25.06.2016
19:30:53
могу сказать
нет
формат — 91 микросекунда, джоин — 60

Zart
25.06.2016
19:31:39
вообще я бы использовал формат и передавал бы аргументы кейвордами
это позволило бы иметь оба варианта "Имя Фамилия" и "Фамилия, Имя"
значит формат тратит больше времени на парсинг строки, чем тупой джойн, который занят только аллоком и копированием

Марк
25.06.2016
19:45:18
Чуваки, а какая механика %timeit?

Zart
25.06.2016
19:45:41
смотри исходники ипитона

Марк
25.06.2016
19:46:34
А то у меня по примерам выше, то что отрабатывают по итогу за 12 ns, по банальному подсчету отрабатывает медленей, чем другая конструкция, которая по %timeit отрабатывает за 30
А,все. Туплю

Zart
25.06.2016
19:49:45
D:\>py -m timeit -s "first, last = 'Your', 'Name'" "full = ' '.join([first, last])"
1000000 loops, best of 3: 0.302 usec per loop
D:\>py -m timeit -s "first, last = 'Your', 'Name'" "full = '{} {}'.format(first, last)"
1000000 loops, best of 3: 0.445 usec per loop
D:\>py -m timeit -s "first, last = 'Your', 'Name'" "full = first + ' ' + last"
10000000 loops, best of 3: 0.103 usec per loop

Марк
25.06.2016
19:51:15
На джоине почему-то принт дольше вылетает

Zart
25.06.2016
19:51:44
какой принт?

Марк
25.06.2016
19:51:53
Результат

Zart
25.06.2016
19:52:09
копипасту
In [1]: %%timeit first, last = 'Your', 'Name'
...: full = ' '.join([first, last])
...:
1000000 loops, best of 3: 363 ns per loop
In [2]: %%timeit first, last = 'Your', 'Name'
...: full = '{} {}'.format(first, last)
...:
The slowest run took 30.33 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 465 ns per loop
In [3]: %%timeit first, last = 'Your', 'Name'
...: full = first + ' ' + last
...:
10000000 loops, best of 3: 119 ns per loop
результат тот же вышел

Марк
25.06.2016
20:00:05
In [3]: time %timeit 'full = ' '.join([1, 100000000 ]) – 2'
100000000 loops, best of 3: 12.9 ns per loop
CPU times: user 5.32 s, sys: 0.01 s, total: 5.33 s
Wall time: 5.33 s
In [4]: time %timeit full = "{0} {1}'.format(1, 100000000) – 1"
10000000 loops, best of 3: 21.4 ns per loop
CPU times: user 0.89 s, sys: 0.00 s, total: 0.89 s
Wall time: 0.89 s

Zart
25.06.2016
20:00:24
у тебя кавычки кривые

Марк
25.06.2016
20:01:14
In [5]: time %timeit "full = ' '.join([1, 100000000 ]) – 2"
100000000 loops, best of 3: 12.9 ns per loop
CPU times: user 5.33 s, sys: 0.00 s, total: 5.33 s
Wall time: 5.33 s
Эта группа больше не существует