Хотя комментарии о том, что multiprocessing
является очень полезным новым пакетом, который позволяет легко использовать преимущества многоядерных систем, ваши требования к многопоточному поведению могут не требовать этого, а также могут не зависеть от "ограничений GIL».
Мы создали много приложений, все они являются многопоточными, которые используются для различных типов управления машиной (или, если хотите, «контрольно-измерительными приборами»).GIL не является для нас проблемой, возможно, потому что мы, как правило, не привязаны к процессору, хотя в тех немногих областях, где мы находимся, это также никогда не было проблемой, так как внешние пакеты, которые мы используем, выпускают GIL при необходимости.(Интенсивность негативных комментариев о GIL всегда удивляет меня, возможно, потому, что мы работаем в несколько нетипичных областях и способах.)
Поддержка потоков Python очень эффективна, очень проста в работе и очень надежна.Мало того, что мы редко сталкиваемся с проблемами параллелизма более низкого уровня (на некоторых языках вам приходится тратить половину времени на размышления о том, что блокировать и когда блокировать), но и в тех немногих областях, где нам все еще нужночтобы обратить на это внимание, доступная поддержка делает все это относительно простым.
Одним из ключевых моментов является использование класса Queue , поскольку его использование, где это возможно, часто устраняет любые оставшиеся проблемы с критическими разделами,условия гонки и т. д. Примитивные объекты Python (целые числа, числа, списки и т. д.) настолько же поточно-ориентированы, как и хотелось бы, хотя, если вы новичок в многопоточных приложениях, они не защитят вас от вашего собственного невежества.Для опытных программистов в этой области я думаю, что Python очень эффективен и прост в использовании.