История изменений
Исправление olegsov, (текущая версия) :
Я вот раньше думал, что GIL это очень очень плохо. Есть multiprocessing, ликвидирующий нужду в threads которые не работают параллельно (т.е. на разных ядрах) из-за GIL. Но проблема в том что для передачи данных между процессами надо использовать pipes, что учень медленно т.к. там используется pickle для всего и вообще глупо как-то, скорость получается как через usb. Мне тут надо было десятки гигабайт гонять между процессами, так что тормозило это по максимуму.
Но недавно открыл для себя такую вещь как SharedMemory (вроде сравнительно недавно добавили, в 3.8 или около того). Позволяет передавать куски памяти между любыми процессами, ничего не копируя. Правда, сначала надо эту память чем-то заполнить и потом это что-то прочитать. Но на помощь приходит numpy, который умеет создавать свои объекты прямо в этих буферах. А когда данных много, numpy всё равно надо использовать для экономии памяти и скорости.
Так что не знаю теперь, за что питон хейтить…
Хмм, пора заказать еще 64 гига, на 2 оставшихся слота… интересно, почему каждый питон процесс, который импортирует numpy, занимает около гигабайта оперативки?
Исходная версия olegsov, :
Я вот раньше думал, что GIL это очень очень плохо. Есть multiprocessing, ликвидирующий нужду в threads которые не работают параллельно (т.е. на разных ядрах) из-за GIL. Но проблема в том что для передачи данных между процессами надо использовать pipes, что учень медленно т.к. там используется pickle для всего и вообще глупо как-то, скорость получается как через usb. Мне тут надо было десятки гигабайт гонять между процессами, так что тормозило это по максимуму.
Но недавно открыл для себя такую вещь как SharedMemory (вроде сравнительно недавно добавили, в 3.8 или около того). Позволяет передавать куски памяти между любыми процессами, ничего не копируя. Правда, сначала надо эту память чем-то заполнить и потом это что-то прочитать. Но на помощь приходит numpy, который умеет создавать свои объекты прямо в этих буферах. А когда данных много, numpy всё равно надо использовать для экономии памяти и скорости.
Так что не знаю теперь, за что питон хейтить…