весь день пытался разобраться с распараллеливанием решения задач в python и целостной картины так и не удалось сложить. помогите пожалуйста пинками в нужных направлениях
я не придумал ничего лучше как изложить в тезисах то, что понимаю. если бы получил обратную связь по поводу тех пунктов, в которых ошибаюсь, то начал бы копать в нужных направлениях
укажите пожалуйста на дичь:
[code]
- реальная мультипроцессорномть использует для каждого процесса отдельное ядро
- в python не существует реальной многопроцессорности, а используется модуль multiprocessing. который выполняет операции в различных процессах, но имеет каналы коммуникации между этими процессами.
- при этом количество ядер, задействованных в вычислениях контролируется ОС и python на это повлиять не может
- мультипоточность это когда вычисления производятся внутри процесса несколькими потоками
- эти потоки имеют доступ к общим ресурсам и удобную коммуникацию между собой
- существует набор моделей управления потоками: lock, semafor, events, etc. при их помощи потоки могут блокировать/освобождать соседние потоки.
- эти модели реализуют модель кооперативной многозадачности
- существует ещё вытесняющая многозадачность. это когда ОС(или GIL) сама решает когда переключаться между потоками
- в однопоточном приложении можно более эффективно работать с IObounded-операциями (например ожидание ответа http), если использовать асинхронность
- таким образом для повышения эффективности программы удобно использовать(в порядке убывания): мультипроцессорность(в виде модуля multipricessing), мультипоточность, асинхронность [/code]