Есть ли смысл использовать Pool на одноядерном процессоре?
Подскажите, есть ли смысл использовать multiprocessing.pool на виртуалке с 1им ядром CPU? На своем 4 ядерном проце выставлял map(4) и map(40) разница есть. Хотя пишут что оптимальнее использовать количество "процессов" = кол-ву ядер.
Q: сколько будет дважды два? A: Мало ли чего пишут про сферическое в вакууме в таблице умножения.
Берешь свое конкретное ПО.
Вычисляешь на нём.
Веришь своим глазам.
Q: сколько будет дважды два?
A: Мало ли чего пишут про сферическое в вакууме в таблице умножения.
То есть вы не считаете самостоятельную проверку убедительной для вас?
Но при этом считаете убедительным то, что кто-то там написал в интернете?
Ах, нет... вы же не считаете убедительным то, что кто-то там написал в интернете?
Или все же считаете?
Или не считаете?
Может, надежнее проверить самому? Тем более, что это несложно.
Ага. Ибо проверил сказанное в своих условиях, в своей задаче
Я-то знаю, что типичное применение Python внутри VDS, а как так хостер разделил приоритеты процессоров и что там на самом деле означают 4 ядра тарифного плана - это еще неизвестно.
Проверяйте, сэр, а не тупо следуйте нагугленным инструкциям.
И для вас откроется замечательный новый мир.
Что до VDS, то бывают и обратные сюрпризы, связанные с большей производительностью, чем ты мог бы её ожидать, исходя из прочитанного.
Нисколько не умаляя полезности чтения официальной документации и профессиональных статей, все же, исходя из 30-ти летнего опыта в программировании, смею полагать что написавшие их такие же люди, а вовсе не боги, которые тоже могут и ошибаться и не учитывать всех нюансов.
Так же встречается ситуация (основанная на когнитивном искажении человеческого разума), что когда у нас нет способа решения задачи - мы выбираем какой-то способ, что якобы подходит. И за уши притягиваем его на новую задачу.
И если не наблюдается страшных проблем, то считаем, что там можно и закрепляем этот опыт в документации/статьях. Но ведь глубокого исследования не было произведено! А там сюрприз закопан.
И документация и рецепты, которые год из года живут вместе с инструментом, хотя инструмент за это время был изменен в этой части - это как за здрасте, встречается не так уж и редко.
В конце концов, авторы этих статей просто столкнулись с проблемой, изучили её и опубликовали свои выводы.
Вы тоже можете раскопать эту же проблему по своему и проанализировать её под другим углом. И так же написать об этом статью.
А можете этого и не делать.
В конце концов, высочайшая производительность в многопроцессорных средах - это не то, ради чего выбирают Python.
longclaps,
Просто не думая следовать готовым рецептам - это тоже способ жизни.
Но можно и развиваться.
Есть замечательная серия статей, что даст вам ликбез по тому, как на самом деле есть multiprocessing, как оно там работает внутри https://habr.com/ru/post/196548/
И еще есть забавные выводы автора - тот метода, что вам на первый взгляд кажется более быстрым, оказывается не всегда более быстрым. И это еще код близкий к голому железу. В случае с Python, где прикладная программа от железа отделена слоями абстракций, ситуации выглядят еще более причудливыми.
Поставьте эксперименты и убедитесь, что авторы чётких рецептов правы только в определенных случаях.
Всё нужно проверять.
nrgian, мощный наброс.
А теперь внимательно читаем вопрос топикстартера. Одно ядро на виртуалке.
Какой нахрен multiprocessing? Если CPU-bound задача - он тупо вреден, если IO-bound - для этого есть asyncio.
Какое отношение указанная статья имеет к вопросу? Никакого. Одно ядро, все дела.
не думая следовать готовым рецептам - это тоже способ жизни.
Мотивационная часть PEP не содержит инструкций (раз уж вы читать не сподобились).
А что где-то пьяный добрый хостер почему-то отдаёт 4 физических ядра по цене одного - эту байку приберегите для голодных, рыщущих в поисках халявы. У них времени много, чтобы гонять бенчмарки )
Намекаю:
Вы знаете как именно разделяют ядра системы виртуализации?
А что где-то пьяный добрый хостер почему-то отдаёт 4 физических ядра по цене одного - эту байку приберегите для голодных, рыщущих в поисках халявы.
Да запросто. Пока другие заказчики этого хостера неактивны.
Весь бизнес хостинга, кстати на том и построен, что ресурсов продается больше чем есть, ибо они мало кому нужны одновременно.
На практике сталкивался (полагаю, попадал на новый сервер, только введенный в эксплутацию и соседей было еще мало; или так повезло с соседями по хостингу), когда реальные ресурсы получше, чем обещанные.
Это нужно проверять
Если CPU-bound задача - он тупо вреден, если IO-bound - для этого есть asyncio
Полно смешанных задач.
Отвечалы, такие отвечалы. Смешаных задач полно, а zdrкропает телеграм-бота (IO-bound, как и следовало ожидать), и осознаёт себя не самым умным. nrgian, не злоупотребляйте его простотой.