Паттерн многозадачности и горутины в Go: пул обработчиков (worker pool)

  Рет қаралды 454

Нина Пакшина

Нина Пакшина

23 күн бұрын

Один из часто используемых паттернов многозадачности - пул обработчиков (worker pool)
Используется, когда требуется искусственно ограничить количество одновременно запускаемых горутин.

Пікірлер: 30
@sobolevn
@sobolevn 7 күн бұрын
Привет, Нина! 👋
@PakshinaNina
@PakshinaNina 7 күн бұрын
@@sobolevn, о, Никита! Привет! Неужели рекомендации ютуба тебя сюда привели? :)
@sobolevn
@sobolevn 7 күн бұрын
@@PakshinaNina ага :)
@pasha_crd
@pasha_crd 10 күн бұрын
Вы реализовали что-то больше похожее на семафор, но не на воркер пул
@PakshinaNina
@PakshinaNina 10 күн бұрын
@@pasha_crd нет :)
@ghostbuster5266
@ghostbuster5266 2 күн бұрын
@@PakshinaNina Согласен что похоже но разница в том что в воркер пуле фиксированное значение горутин которые работают все время и ждут данные на вход, а при семафоре у нас число горутин варьируется от степени нагруженности системы(не будет создана новая горутина пока старая не отработает), и следуя этой логике на видео действительно не воркер пул
@PakshinaNina
@PakshinaNina 2 күн бұрын
@@ghostbuster5266 ну вот ты сам написал, что такое воркер пул. Именно это и реализовано.
@PakshinaNina
@PakshinaNina 2 күн бұрын
@@ghostbuster5266 число одновременно запущенных горутин = размеру буфера. Как только воркер завершает исполнение, запускается следующая горутина. Одновременно выполняется только N воркеров
@ghostbuster5266
@ghostbuster5266 2 күн бұрын
@@PakshinaNina у вас на каждую новую задачу создается новый воркер. Их количество меняется от нагрузки(если не будет задач то и нет воркеров в работе) и это семафор
@lords_inactive
@lords_inactive 14 күн бұрын
Здравствуйте, посмотрел ваше недавнее видео про http3, и немного вопрос не по теме, но все же связан с сетевыми запросами. Как можно уменьшить максимально время, подачи запроса со стороны клиента к серверу? Используя Golang
@PakshinaNina
@PakshinaNina 14 күн бұрын
@@lords_inactive добрый день, вы используете клиент го из стандартной библиотеки? А в каком месте сейчас задержка? Пока по описанию не понимаю, что можно предложить :)
@lords_inactive
@lords_inactive 14 күн бұрын
@@PakshinaNina да использую net/http , заметил что на Go запросы проходят быстрее чем через другие яп, например быстрее python/C++ и тд, иногда даже в два раза. И быстрее запросов в браузере почти всегда. Но я думаю что есть возможность еще настроить запросы в Go так что бы скорость была еще быстрее.
@PakshinaNina
@PakshinaNina 14 күн бұрын
@@lords_inactiveна Хабре есть хорошая статья «Ускоряем интернет-запросы и спим спокойно» на эту тему!
@PakshinaNina
@PakshinaNina 14 күн бұрын
@@lords_inactive возможно можно ускорить за счет сетевых настроек. Или попробовать написать свой клиент поверх TCP сокетов :)
@witcher_streams
@witcher_streams 18 күн бұрын
Как рассчитать оптимальное количество воркеров, возможно есть какая-нибудь формула в зависимости от количества ядер или что-то подобное?
@PakshinaNina
@PakshinaNina 18 күн бұрын
@@witcher_streams хороший вопрос, но здесь нет точного ответа) Например, если у Вас CPU-bound операции (например, какие-то математические операции), то не имеет смысл делать много воркеров. А лучше сколько GOMAXPROCS столько и воркеров. Если операции I/O, то воркеров может быть тысячи. Можно приблизительно посчитать сколько в пике горутина будет потреблять памяти, напримерм с помощью бенчмарков или профайлинга. И уже посмотреть по доступным ресурсам.
@PakshinaNina
@PakshinaNina 6 күн бұрын
@@witcher_streams кстати, я поизучала вопрос. Про cpu-bound для го не очень актуально. Я 8го августа буду делать доклад в мтс, хочу частично эту тему затронуть))
@witcher_streams
@witcher_streams 6 күн бұрын
@@PakshinaNina я попробовал уменьшить количество воркеров до числа ядер и производительность осталась примерно на том же уровне, то есть создавать много горутин действительно нет смысла, буду ждать доклад о том как это сделать правильно
Эта нейросеть делает презентации 😱
0:35
КруТа в дизайне ❘ Блог Крупиной Татьяны
Рет қаралды 274 М.
Why Is He Unhappy…?
00:26
Alan Chikin Chow
Рет қаралды 15 МЛН
EVOLUTION OF ICE CREAM 😱 #shorts
00:11
Savage Vlogs
Рет қаралды 7 МЛН
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 36 МЛН
Всё ОГЭ по информатике за 30 минут | Артём Фролов
33:55
Информатика ОГЭ Умскул
Рет қаралды 205 М.
Библиотека Unsafe в Golang
27:24
Нина Пакшина
Рет қаралды 396
СРАВНИЛ ПРОФИ ГЕНШИН и ПРОСТОГО ИГРОКА
16:20
Всё про конкурентность в Go
23:36
defer panic
Рет қаралды 15 М.
КАК РАБОТАЕТ БРАУЗЕР?
45:23
Alek OS
Рет қаралды 132 М.