@python_beginnersЭта группа больше не существует

Страница 83 из 1885
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
I've just started a new Python2 project :D
выпили ответ на мой вопрос, так как автор ответа его удалил.

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
Какой ты чувствительный мальчик, Томми
ты его спиздил, но вопрос адресовался тем, кто не знает, и кому интересно. А не к "а, ясно."

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
хз, у нас на олимпиадах за работающее, но плохое решение не хвалили

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
О, вон и поциент подоспел, а вы тут "надо сразу ответ пилить"

Марк
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
это не мешало куче людей её решить 8)))
Ты про какую-то конкретную олимпиаду?

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

Zart
25.06.2016
19:12:38
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() Вот как-то так короч
сетсид там нафиг не нужен дуп2 в питоне возвращает туплы, он все дескрипторы похерил и это выглядит попыткой запилить редирект в девнулл для нового процесса

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
вот все те дуп2 - это попытка на питоне написать аналог из С для "cmd1 | cmd2"
Демонизация же и идет с подобных конструкций. Ты отвязваешься от терминала, делаешь chroot в корень, пид. Это рили типовая конструкция характерная для того же перла

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
full = first + ' ' + last
да, в разы

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

Страница 83 из 1885

Эта группа больше не существует Эта группа больше не существует