#multithreading #multiprocessing
Про GIL
Возникает закономерный вопрос, а чего бы не применить потоки ко второй задаче? можете попробовать, ничего не сломается, но работать быстрее не будет 🥲. Почему? Ведь мы запустили также 2 задачи параллельно, почему код не исполняется в 2 раза быстрее?!
Это особенность именно питона, тут не могут работать несколько потоков одновременно! Это происходит потому что в интерпретаторе есть код, который называется GIL(global interpreter lock). Он делает так, чтобы в один момент времени, только один поток мог иметь контроль над интерпретатором.
Вообще, GIL придуман не для того, что портить нам жизнь и не давать использовать потоки во всю их силу. Он помогает нам с вами не думать об освобождении памяти, да и вообще, он даже может ускорять программы, если они работают только в один поток!
Погоди, шеф, а почему же запросы тогда ускорялись 🧐? Мы использовали потоки, чтобы ускорять http-запросы, помните? Дело в том, что в этом случае работает также, только один поток в один момент времени, просто это io-bound задачи, они большую часть времени ждут! И пока один поток ждет, включается другой, делает запрос и также ждет, передавая управление другому и так далее. Поэтому такого рода задачи действительно эффективно решаются с помощью многопоточности.
Post #19
1.57K
Python ментор #python, #multiprocessing За многопроцесность, в python отвечает модуль multiprocessing, ничего устанавливать не надо, просто импортируем. Внимание на картинки❗️У нас есть какая-то задача cpu_bound, она считает сумму всех чисел от 0 до number и нагружает…

- 👍 14
- 🔥 5
- 🤯 3
- 💯 3
- 😱 1
- 🤝 1