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

Stanislav
06.11.2016
16:38:48
Так что там с обучением?

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

Марк
06.11.2016
16:41:12

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

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

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

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

Google

Марк
06.11.2016
16:43:30

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

Denis
06.11.2016
16:47:21

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
А как там а пхп с трэдами? Я вообще не в курсах.

Pavel
06.11.2016
16:50:49

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
Лутц не испортит картины по началу?

melancholiac
06.11.2016
16:53:33

Марк
06.11.2016
16:53:53

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

Michael
06.11.2016
16:54:27

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 и проксирует на рабочий порт проекта

Марк
06.11.2016
17:01:54

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 ЗА проксёй.

Марк
06.11.2016
17:04:17

Zart
06.11.2016
17:04:59

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
я думаю у человека с джангой проблема в том что он не пробрасывает корректно заголовки

Марк
06.11.2016
17:07:15

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
вот в таких задачках да
Эта группа больше не существует