Pull to refresh

Comments 8

Спасибо за перевод. Вопрос: если я не сторонник внутрипитоновской мультипроцессности, а распараллеливание вычислений делаю микросервисной архитектурой (есть диспетчер и есть одинаковые воркеры, которые запускаются в некоторых количествах на одном или на нескольких серверах), то существует ли способ внутри питоновской программы принудительно указать какое логическое ядро я хочу использовать? Например, имеем 16 ядер, запускаем 16 воркеров, смотрим на загрузку- 15 ядер загружены, а одно- нет — значит работа идет не оптимальная- 16 программ работаеют на 15ти ядрах. Хочется иметь возможность принудительно указать воркеру номер ядра на котором он будет исполняться. Интересуют ваши соображения по этому поводу как для линукса так и для винды. Заранее признателен за ответ.
В случае с Unix системами можно попробовать поиграться с os.sched_setaffinity. Если же Вы видите неравномерную нагрузку на ядра ЦПУ, то это скорее не проблема Python или Вашего приложения, это проблема ОС и ее планировщика.
Да, именно так. Это проблема планировщика ОС, который раскидывает задачи по ядрам. И когда он это делает не оптимально (для меня) — хочется вмешаться и явно сказать что и на каком ядре запускать.
И когда он это делает не оптимально (для меня) — хочется вмешаться и явно сказать что и на каком ядре запускать.
Выглядит очень странно. Операционка обычно равномерно нагружает ядра. Возможно ваши воркеры никогда не завершаются, и тогда у операционки нет возможности перераспределить нагрузку. Простым решением в вашем случае должен быть запуск каждой поступающей задачи в новом потоке, и завершать поток при завершении задачи. Но это не точно.
Как вариант использовать psutil и его Process.cpu_affinity
а теперь вместо потоков попробовать использовать event-driven engine, тот же Twisted
я не опнял первый пример. Без потоков получилось 135 милисекунд, с потоками получилось 147. И в выводах пишут что это успех. Но ведь стало медленнее???

Хорошо было бы добавить обзор asyncio, а ещё лучше, сравнить многопоточность и event loop для задач ввода-вывода.

Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
otus.ru
Employees
51–100 employees
Registered
Representative
OTUS