
Nikolay
03.07.2017
23:23:39

Aleksandr
03.07.2017
23:23:50

Nikolay
03.07.2017
23:24:12

Aleksandr
03.07.2017
23:24:17

Google

Aleksandr
03.07.2017
23:24:36

Nikolay
03.07.2017
23:25:03
в эрланге такое же достигается через легковесные процессы, например
питон так пока не умеет, потому что run_in_executor что? правильно, по дефолту использует ThreadPoolExecutor, который блокируется GIL

Aleksandr
03.07.2017
23:26:24

Nikolay
03.07.2017
23:27:00
наверное, такое тоже теоретически возможно, на практике смутно себе представляю конкурентный парсинг дерева

Aleksandr
03.07.2017
23:28:19

Nikolay
03.07.2017
23:28:39
я на эрланг последний раз смотрел довольно давно, но что он, что go до сих пор топчики по теме бесшовного использования нескольких ядер
а питон так не умеет, что бы ты там выше ни утверждал)

Aleksandr
03.07.2017
23:30:07

Google

Nikolay
03.07.2017
23:30:51
в го чуть похитрее, но идея похожая в целом
независимо от того, насколько хорош или плох API - питон в это просто тупо не умеет
возможно, скоро научится
если gilectomy выстрелит, например
или STM запилят
но пока до этого чего-то далеко

Aleksandr
03.07.2017
23:33:43
слушай, дай мне свои доклады послушать, или лекции, наверное не с пайкона пока но хоть что-то

Nikolay
03.07.2017
23:34:36
16 июля вроде

?
03.07.2017
23:35:23

Aleksandr
03.07.2017
23:35:25

Nikolay
03.07.2017
23:35:42

Проксимов
03.07.2017
23:35:47

Nikolay
03.07.2017
23:35:52
не совсем про питон даже

Aleksandr
03.07.2017
23:35:56

Nikolay
03.07.2017
23:36:04

Проксимов
03.07.2017
23:36:43

Aleksandr
03.07.2017
23:37:04

Google

Nikolay
03.07.2017
23:37:08

here1am
03.07.2017
23:38:06
дораха

Aleksandr
03.07.2017
23:45:10
@Enchantner
точка. не позорься больше.

Nikolay
03.07.2017
23:45:40
кооперативная многозадачность - это когда сопрограммы сами решают, когда вернуть управление

here1am
03.07.2017
23:46:06
ноунейм картинка - неоспоримый аргумент

Nikolay
03.07.2017
23:46:13
а в питоне это решает шедулер в случае потоков

here1am
03.07.2017
23:46:21
(покажи код ёпты)

Скрудж
03.07.2017
23:46:38

Aleksandr
03.07.2017
23:46:56

Nikolay
03.07.2017
23:47:26

Aleksandr
03.07.2017
23:47:35

Nikolay
03.07.2017
23:47:50
ок
https://en.wikipedia.org/wiki/Cooperative_multitasking
Cooperative multitasking, also known as non-preemptive multitasking, is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process. Instead, processes voluntarily yield control periodically or when idle in order to enable multiple applications to be run simultaneously.
в случае потоков питона, разумеется, мы имеем первый случай, потому что у нас есть шедулер, который решает, какому потоку дальше передать управление
а в случае корутин - второй, потому что у нас есть yield и await
так что да, Бизли немного накосячил с термином

Aleksandr
03.07.2017
23:49:48

Nikolay
03.07.2017
23:50:15

Google

Aleksandr
03.07.2017
23:50:17
еще в коде питона кто-то накосячил
и это именно так и работает

Nikolay
03.07.2017
23:50:37
шедулер потоков операционной системы остается шедулером потоков операционной системы
независимо от того, есть GIL в питоне или нет
и да, еще раз подчеркну - потоки в питоне - это обычные pthreads, параллельные. Синхронизируются на мьютексе, да, но, тем не менее, параллельные
и управляются шедулером, а не возвращают управление сами
можно, конечно, выпендриться и назвать отпускание глобального мьютекса возвратом управления, но это будет неверно с точки зрения терминологии кооперативной многозадачности

Aleksandr
03.07.2017
23:53:06
не он, а поток, и не конкурентности, а параллельности
параллельность - это одновременное выполнение операций, в один и тот же момент времени, каждый системный поток может выполнять инструкции только на одном ядре и только последовательно.
асинхронность (конкурентность) - это поочередное выполнение операций

Nikolay
03.07.2017
23:53:50

Admin
ERROR: S client not available

Nikolay
03.07.2017
23:54:07
в общем случае - да, но не всегда

Aleksandr
03.07.2017
23:54:37
боже кто тебя пустил на пайкон, извини конечно

Nikolay
03.07.2017
23:55:00

Aleksandr
03.07.2017
23:55:20
да-да, все прости, продолжай вещать в том же духе

Nikolay
03.07.2017
23:55:50
так я все объяснил уже, даже ссылку на википедию привел
и описал тебе, как работает шедулер в питоне, и разжевал, почему run_in_executor тебе не поможет

Alex
03.07.2017
23:56:07

Nikolay
03.07.2017
23:56:09
а ты все чем-то не доволен

Aleksandr
03.07.2017
23:57:40
давайте запилим голосование - Отпускается ли GIL на I/O-операции в потоках? мне очень любопытно что в широких массах считают, если спикеры региональной топовой конференции несут такую чушь

Nikolay
03.07.2017
23:58:16

Google

Маришка
03.07.2017
23:58:33

Nikolay
03.07.2017
23:58:43
тут и голосовать не надо

Маришка
03.07.2017
23:59:16
> И внезапно по результатам голосования в питоне начнёт работать GIL
или для себя

Nikolay
03.07.2017
23:59:31

Маришка
03.07.2017
23:59:35
определиться не можешь?)

Nikolay
03.07.2017
23:59:50

Alex
04.07.2017
00:00:01

Nikolay
04.07.2017
00:00:14

Aleksandr
04.07.2017
00:00:33

Denis
04.07.2017
00:00:39
Ну вообще зависит от того, как реализована операция. Если там какая-то нетривиальная сишная либа и ее разработчик рак, гил может не отпускаться

Nikolay
04.07.2017
00:01:01

Aleksandr
04.07.2017
00:01:13

Denis
04.07.2017
00:01:39
Если это нормальные файлы или сокеты, отпускается

Nikolay
04.07.2017
00:01:41

Denis
04.07.2017
00:02:00
Можно даже проверить

Aleksandr
04.07.2017
00:02:34

Nikolay
04.07.2017
00:02:49
Александр, я знаю, за что ты уцепился - за принцип работы aiofiles. Да, он работает в базовом виде благодаря тредам, потому что там внешний I/O. Да, треды в данном случае полезны, потому что GIL на таких операциях отпускается

Denis
04.07.2017
00:03:03
В одном потоке синхронный recv, другой что-нибудь пишет по таймеру

Nikolay
04.07.2017
00:03:06
но это довольно редкий случай, когда от них реально есть польза