Передача данных между потоками asyncio
Каким образом можно передавать данные между потоками asyncio? Можно создать глобальную переменную. Есть ли аналог golang каналов?
Ответы (1 шт):
Автор решения: eri
→ Ссылка
@Yakov - хоть питон и одномоментно работает в одном ядре - это ядро может меняться, а данные могут остаться в кеше другого ядра. Да и GIL блокирует только функции реализованные на питоне. Сишный вызов (Ввод-Вывод - как частный случай) может работать паралельно.
Передача через переменную совсем не безопасна в нагруженной системе. Чтоб обратиться к глобальной переменной нужно поставить блокировку через лок или кондишн.
Очереди идеальный вариант передачи из одного потока в другой, если передаем последовательности.