МНОГОПОТОЧНОСТЬ И АСИНХРОННОСТЬ PYTHON

Многопоточность и асинхронность - это два подхода к параллельному выполнению задач в Python.

Многопоточность позволяет создавать несколько потоков выполнения в одном процессе Python, каждый из которых может выполнять свою задачу независимо от других. Но использование многопоточности в Python имеет свои ограничения из-за Global Interpreter Lock (GIL), который позволяет выполнять только один поток в один момент времени.

В свою очередь, асинхронность позволяет сделать то же самое, но без создания дополнительных потоков. Вместо этого используется один поток, который может переключать контекст между задачами, не блокируя выполнение программы. Это делает возможным более эффективное использование ресурсов и повышение производительности программы.

Например, при работе с сетевыми приложениями, которые могут ожидать ответа от сервера, использование асинхронных операций позволяет использовать другие задачи во время ожидания ответа, в отличие от многопоточности, где потоки могут заблокироваться в ожидании ответа, и не дадут другим потокам возможность выполнить свою работу.

Вот пример кода на Python, демонстрирующий разницу между многопоточностью и асинхронностью:

import time
import threading
import asyncio

def worker():
    print("Starting to work")
    time.sleep(3)
    print("Finished working")

start = time.time()
threads = []
for i in range(4):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()
for t in threads:
    t.join()
print("Time taken (with threads):", time.time() - start)

async def coro():
    print("Starting to work async")
    await asyncio.sleep(3)
    print("Finished working async")

start = time.time()
loop = asyncio.get_event_loop()
tasks = []
for i in range(4):
    task = loop.create_task(coro())
    tasks.append(task)
loop.run_until_complete(asyncio.wait(tasks))
print("Time taken (with asyncio):", time.time() - start)

Многопоточность и GIL

Асинхронное программирование в Python

Multitasking in Python (asynchronous, multithreading, multiprocessing).

Асинхронность в McDonalds и Python

Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?

Thread → Task. Многопоточность и Асинхронность

Mojo 🔥 — Новый язык, который заменит Python?

Многопоточность и Асинхронность в Программировании - Python Threading и Multiprocessing

Асинхронность, многопоточность, многопроцессность в python - Библиотека asyncio и асинхронный код

BLGPG-FB8EF96BD165-24-11-24-00

Новые материалы: