Sobes.tech
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("Все задачи завершены")