В каких операциях можно добиться асинхронного выполнения процесса
Python
Junior
Без компании
В каких операциях можно добиться асинхронного выполнения процесса
Ответы
В Python асинхронное выполнение можно добиться через несколько подходов:
- **asyncio** - стандартная библиотека для асинхронного программирования:
```
import asyncio
async def task():
print("Start")
await asyncio.sleep(1)
print("End")
asyncio.run(task())
```
- **Потоки (threading)** - для I/O-bound операций:
```
from threading import Thread
import time
def task():
time.sleep(1)
print("Done")
thread = Thread(target=task)
thread.start()
```
- **Процессы (multiprocessing)** - для CPU-bound операций:
```
from multiprocessing import Process
def task():
print("Process running")
process = Process(target=task)
process.start()
```
- **Генераторы** через `yield`:
```
def async_gen():
yield "First"
yield "Second"
gen = async_gen()
print(next(gen))
```
Ключевые различия:
- asyncio использует event loop и корутины
- threading работает с GIL (подходит для I/O)
- multiprocessing обходит GIL (для CPU задач)
- генераторы дают простую псевдо-асинхронность