Junior — Middle
Може ли да изпълнявате няколко задачи едновременно в един поток в Python?
sobes.tech AI
Отговор от AI
В Python в един поток може да изпълнява няколко задачи едновременно, използвайки асинхронно програмиране (asyncio) или генератори, които позволяват превключване между задачите без създаване на нови потоци. Въпреки това, поради GIL (Global Interpreter Lock) в стандартната реализация на CPython, едновременната изпълнение на няколко потока, изпълняващи Python код, е ограничена — само един поток се изпълнява в даден момент.
Пример с asyncio за едновременна изпълнение на задачи в един поток:
import asyncio
async def задача(име, закъснение):
await asyncio.sleep(закъснение)
print(f"Задача {име} завърши")
async def main():
await asyncio.gather(
задача('A', 1),
задача('B', 2),
задача('C', 1.5)
)
asyncio.run(main())
По този начин, няколко задачи могат да се изпълняват "паралелно" в един поток, превключвайки според времето за изчакване, но не едновременно в смисъла на многопоточността.