Middle
105
questionbank
В чем разница между асинхронностью и параллелизмом?
Ответ от нейросети
sobes.tech AI
Асинхронность позволяет выполнять задачи вперемежку, не блокируя основной поток выполнения в ожидании завершения ресурсоемких операций (например, I/O). Одна задача может приостановиться, уступив место другой, а затем продолжить выполнение.
Параллелизм подразумевает одновременное выполнение нескольких задач, обычно на разных ядрах процессора. Для этого используются процессы или потоки.
| Характеристика | Асинхронность | Параллелизм |
|---|---|---|
| Выполнение | Перемежающееся выполнение задач | Одновременное выполнение задач |
| Ресурсы | Один поток/процесс (чаще всего) | Несколько потоков/процессов |
| Цель | Эффективное использование времени ожидания (I/O) | Ускорение выполнения CPU-bound задач |
| Механизмы | asyncio, await |
threading, multiprocessing |
# Пример асинхронности
import asyncio
async def task1():
print("Выполняется задача 1")
await asyncio.sleep(1) // Имитация долгой операции
print("Задача 1 завершена")
async def task2():
print("Выполняется задача 2")
await asyncio.sleep(1) // Имитация долгой операции
print("Задача 2 завершена")
async def main():
await asyncio.gather(task1(), task2()) // Запуск задач в асинхронном режиме
if __name__ == "__main__":
asyncio.run(main())
# Пример параллелизма с потоками
import threading
import time
def task1():
print("Выполняется задача 1")
time.sleep(1) # Имитация долгой операции
print("Задача 1 завершена")
def task2():
print("Выполняется задача 2")
time.sleep(1) # Имитация долгой операции
print("Задача 2 завершена")
thread1 = threading.Thread(target=task1)
thread2 = threading.Thread(target=task2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("Все задачи завершены")