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

Страница 704 из 1885
Vadim
06.11.2016
16:38:37
@django_python Я спокоен! Честно! Мы можем прекратить этот флуд, но я готов отвечать на любые другие вопросы)

Vadim
06.11.2016
16:40:16
@MarkEgorov ты выбрал продолжить флейм? Ок. Первый вопрос был "как работает GIL". Ответ "там 100 тиков" не является корректным ответом на поставленный вопрос.

Google
Vadim
06.11.2016
16:40:46
@django_python уточни вопрос :)

Stanislav
06.11.2016
16:41:11
@django_python уточни вопрос :)
Ну, ты спрашивал цену, значит ментором хочешь стать?

Марк
06.11.2016
16:41:12
@MarkEgorov ты выбрал продолжить флейм? Ок. Первый вопрос был "как работает GIL". Ответ "там 100 тиков" не является корректным ответом на поставленный вопрос.
Нет. Я спросил в каких версиях. Ты ответил. Я ответил в чем разница. Выше я написал, что после этих интервалов поток обязан передать управление другому

Vadim
06.11.2016
16:41:31
@MarkEgorov Не отходя от кассы, там была еще пара вопросов.

Марк
06.11.2016
16:41:46
Zart
06.11.2016
16:42:00
ммм

Vadim
06.11.2016
16:42:01
@django_python Ну… Можно обсуждать.

@MarkEgorov Давай. Я не вижу вопрос в свой адрес.

Zart
06.11.2016
16:42:24
вы как-то прикольно ударились в нюансы реализации не ответив на основной вопрос - что именно гил делает вообще

Stanislav
06.11.2016
16:42:41
@django_python Ну… Можно обсуждать.
Я не хочу заказывать услуги, просто интересно что ты решил и тп

Denis
06.11.2016
16:43:07
Позволяет нескольким потокам получать доступ к общей памяти

Zart
06.11.2016
16:43:22
эм... нет

Vadim
06.11.2016
16:43:24
@django_python Скажем так, я периодически выполняю такие задачи для узкого круга людей :)

Google
Zart
06.11.2016
16:43:34
потоки по определению имеют общую память

Марк
06.11.2016
16:44:08
То есть, задачи выполняются последовательно, но благодаря его блокировке идет имитация парралельного выполнения

Zart
06.11.2016
16:44:15
о.о

Vadim
06.11.2016
16:44:21
:)

Denis
06.11.2016
16:44:31
The Python interpreter is not fully thread-safe. In order to support multi-threaded Python programs, there’s a global lock, called the global interpreter lock or GIL, that must be held by the current thread before it can safely access Python objects. Without the lock, even the simplest operations could cause problems in a multi-threaded program: for example, when two threads simultaneously increment the reference count of the same object, the reference count could end up being incremented only once instead of twice.

Из доков

Zart
06.11.2016
16:44:44
классическая ошибка про путаницу между параллелизмом и конкурренси...

Vadim
06.11.2016
16:44:48
"prevents multiple native threads from executing Python bytecodes at once"

Michael
06.11.2016
16:44:51
Всем отвечать можно или нет?

Про гил

Vadim
06.11.2016
16:45:55
Мне пофиг, я уже ржу. @zartsoft, можно всем отвечать? ))

Zart
06.11.2016
16:46:07
это определение из доки, да. проблемы многопоточности можно было решать как в руби - заставив программистов юзать тот же threading.Lock явно

можно конечно, бо я всё еще ключевого слова не вижу

Марк
06.11.2016
16:46:23
классическая ошибка про путаницу между параллелизмом и конкурренси...
Найн. У тебя есть две задачи. Они не выполняются одновременно. Задача 1 выполняется ща интервал. Дальше следует обязалово переключиться на другую задачу и похуй, выполнилась она до конца или нет.

Zart
06.11.2016
16:47:40
угу

может кто про пхп таки вспомнит

Vadim
06.11.2016
16:49:26
А может не надо? У меня с ним плохие воспоминания: как-то на собеседовании (когда еще писал на нём) у меня девочка-HR спросила, знаю ли я эРэНэР. Я секунд 30 пытался понять, о чем она.

Google
Michael
06.11.2016
16:49:44
???

Zart
06.11.2016
16:50:12
я сейчас даже не про пхп как язык, а про конкретные его бинарники

зачем они компилируют их в двух версиях - thread-safe и non-thread-safe?

Michael
06.11.2016
16:50:46
А как там а пхп с трэдами? Я вообще не в курсах.

Denis
06.11.2016
16:50:53
Могу предположить, что non-thread-safe быстрее

Zart
06.11.2016
16:51:13
=_=

Michael
06.11.2016
16:51:17
Интересно

Может под разные версии серверов?

Vadim
06.11.2016
16:52:46
Мне другое интересно: скольким людям в этом чате на практике пригодится знание про устройство GIL и зачем? Ну или про GC, это не принципиально.

@#*!
06.11.2016
16:53:06
Лутц не испортит картины по началу?

Марк
06.11.2016
16:53:53
"prevents multiple native threads from executing Python bytecodes at once"
Ты ж тут сказал без гугла, а сам полез в цитатник.

Zart
06.11.2016
16:53:56
и пхп и цпитон оба позволяют использовать готовые сишные либы, так? пхп пошел по пути опциональной версии гил - которая выбирает компилировать его или нет. да, это быстрее для многопроцессных серверов, которые не пользуются тредами. цпитон не может сделать такой выбор - потому что не привязан к конкретным средам выполнения, поэтому гил там встроен всегда. главная задача гил на самом деле - упростить задачу прикручивания стороннего сишного кода. поэтому у айрона и джитона нет ни этой проблемы ни гил.

Zart
06.11.2016
16:54:46
в стдлибе питона пачка сишных либ прикручена, ради этого всё это и прикручивалось изначально

Vadim
06.11.2016
16:55:20
@MarkEgorov, над моим сообщением была цитата, кажется, оттуда же.

Zart
06.11.2016
16:55:43
те кто хотят выпилить гил должны придумать альтернативу, которая должна выполнить ту же задачу

Марк
06.11.2016
16:56:04
Карочи, я ответил по памяти верно.

Google
Vadim
06.11.2016
16:56:09
Про "зачем" вопрос исключительно из практики.

Korolll
06.11.2016
16:56:20
Здравствуйте, использую django 1.10 клиент написан на angular. Проксирую все запросы к Django на nginx. И если я отправляю post запрос напрямую с клиента на сервер всё работает отлично, но стоит мне отправить через nginx прокси всё ломается (требует csrf cookie, но в запросе оно точно присутствует). Простите за корявую формулировку, мне кажется nginx проксирует запрос не так как бы мне хотелось. Если есть кто-нибудь кто сталкивался с чём-то подобным, откликнитесь пожалуйста

Zart
06.11.2016
16:57:31
"проксирую" - в смысле ты гоняешь runserver, а нгинкс проксит на?

тогда он скорее всего заголовки не для того хоста шлёт в итоге...

Vadim
06.11.2016
16:58:28
Да, посмотри на хедеры, которые прилетают за проксю.

Марк
06.11.2016
16:59:23
Michael
06.11.2016
16:59:31
те кто хотят выпилить гил должны придумать альтернативу, которая должна выполнить ту же задачу
А почему прикручивание стороннего сишного кода в питоне приходится сопровождать гилом, ведь в самрм си с чистыми потоками вроде бы все ок?

Vadim
06.11.2016
17:00:01
@MarkEgorov, не понимаю. Выше моего сообщения привели цитату. Изначальный вопрос был меня проверить? Этого можно не делать, я себе доверяю о_0

Admin
ERROR: S client not available

Korolll
06.11.2016
17:01:18
Ну если подробнее то у меня запущен supervisor он запускает gunicorn, который создаёт сокет, который слушает nginx и проксирует на рабочий порт проекта

Vadim
06.11.2016
17:02:11
Korolll, запусти runserver и посмотри хедеры.

Korolll
06.11.2016
17:03:22
Когда я запускаю runserver в ручную всё отлично работает

Vadim
06.11.2016
17:03:27
@MarkEgorov, за какое время выполняется один тик на разных устройствах? Это ответ на вопрос, почему сейчас практически все перешли на временные интервалы. Хотя, есть и другой вариант – оставить тики и руками ограничивать их TpS.

Korolll, запусти runserver ЗА проксёй.

Michael
06.11.2016
17:05:39
Zart
06.11.2016
17:06:00
А хуй его, за какое время исполняется один тик. Поэтому и перешли.
перешли потому что старая модель приводила к жуткому трешингу. в слайдах бизли очень подробно рассмотрено поведение тредов со старым и новым гил

Korolll
06.11.2016
17:06:22
За прокси нет csrf

Google
Vadim
06.11.2016
17:06:25
@MarkEgorov, "ограничивать руками" читать как "на уровне языка/фреймворка". Например, в UnrealEngine и Unity есть как "потиковый" апдейт (N раз в секунду), так и "апдейт как только можем" – M раз в секунду, где M может быть » N. Но для данных рекомендуют использовать первый вариант.

Zart
06.11.2016
17:07:06
я думаю у человека с джангой проблема в том что он не пробрасывает корректно заголовки

Lavrushchik
06.11.2016
17:08:51
https://server.179.ru/tasks/olymp/001.html#g_t001 Никто не подскажет как такую задачку на питоне попробовать решить?

Vadim
06.11.2016
17:08:56
@MarkEgorov, я привел другой конкретный пример. Не надо быть таким узколобым и пытаться везде искать подвох.

Марк
06.11.2016
17:09:22
Zart
06.11.2016
17:09:51
Vadim
06.11.2016
17:10:31
@MarkEgorov, мне кажется, я вполне полно ответил на твой единственный вопрос на эту тему. А вот ты не на все мои вопросы ответил, если уж начинать занудничать.

Марк
06.11.2016
17:10:35
ну вариативность длительности выполнения байткодов усугубляла проблему, да
И Бизли пишет, что точно всосать, сколько один тик занимает нереально.

Zart
06.11.2016
17:10:50
конечно нереально

там большинство операций ни разу не О(1)

Vadim
06.11.2016
17:11:44
@zartsoft, только не спрашивай про сложность различных операций! Подумают, что троллишь :)

Zart
06.11.2016
17:12:17
да я сам в эти асимптоты не очень

на практике такое нужно крайне редко

Марк
06.11.2016
17:12:56
Карочи, Вадим включил тупое трололо

Denis
06.11.2016
17:13:26
А не, динамика

Vadim
06.11.2016
17:13:53
@zartsoft, это на практике иногда очень нужно, когда приходится оптимизировать код с N вложенных циклов. Например, рекурсивный обход направленного графа с циклами (реальная задача в проекте).

@MarkEgorov, я бы попросил аккуратнее выражаться.

Zart
06.11.2016
17:14:16
вот в таких задачках да

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

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