Русский
Открыть в Telegram

Пост ✈️ В Python модуль `concurrent.futures` предоставляет высокоуровневый интерфейс для асинхронного выполнения вызовов функ…

17 декабря 2024
P
Pythoner
Фотография
✈️ В Python модуль `concurrent.futures` предоставляет высокоуровневый интерфейс для асинхронного выполнения вызовов функций, используя пул потоков или процессов. Он упрощает распараллеливание задач и позволяет эффективно использовать многоядерные процессоры для ускорения выполнения программ. ➡️ Применение concurrent.futures особенно полезно при работе с I/O-bound задачами, такими как сетевые запросы, чтение/запись файлов, взаимодействие с базами данных. Он также может быть эффективен для CPU-bound задач, если они могут быть разделены на независимые подзадачи. ➡️ Вот пример использования concurrent.futures с ThreadPoolExecutor: import concurrent.futures import time import requests URLS = [ "https://www.example.com", "https://www.google.com", "https://www.python.org", "https://www.wikipedia.org", ] def load_url(url, timeout): try: response = requests.get(url, timeout=timeout) return f"{url}: {len(response.content)} bytes" except requests.exceptions.RequestException as e: return f"{url}: Error: {e}" start_time = time.time() # Последовательное выполнение: for url in URLS: print(load_url(url, timeout=60)) end_time = time.time() print(f"Последовательное выполнение заняло: {end_time - start_time} секунд") start_time = time.time() # Асинхронное выполнение с ThreadPoolExecutor: with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: # map() возвращает результаты в порядке URLS future_to_url = {executor.submit(load_url, url, 60): url for url in URLS} for future in concurrent.futures.as_completed(future_to_url): url = future_to_url[future] try: data = future.result() except Exception as exc: print(f"{url}: generated an exception: {exc}") else: print(data) end_time = time.time() print(f"Асинхронное выполнение заняло: {end_time - start_time} секунд") ⬆️ В этом примере демонстрируется загрузка содержимого нескольких URL-адресов сначала последовательно, а затем асинхронно с использованием ThreadPoolExecutor. Функция load_url загружает данные по указанному URL. ThreadPoolExecutor создает пул потоков, которые выполняют загрузку URL-адресов параллельно. as_completed позволяет обрабатывать результаты по мере их готовности, не дожидаясь завершения всех задач. Сравнение времени выполнения показывает преимущество асинхронного подхода, особенно при работе с сетевыми запросами. 🐍 Pythoner
22 · 1.7K ·

Рядом в ленте

PPythoner✈️ В Python FastAPI — это современный, высокопроизводительный веб-фреймворк для создания API. Он основан на стандартах OpenAPI и JSON Schema, что обеспечивает аPPythoner✈️ В Python модуль `difflib` — это мощный инструмент для сравнения последовательностей, таких как строки, списки и другие итерируемые объекты. Он предоставляет
это сообщение
PPythoner✈️ В Python shutil (shell utilities) — это высокоуровневая библиотека, предоставляющая функции для работы с файлами и директориями. Она расширяет возможности моPPythoner✈️ В Python NumPy — это фундаментальная библиотека для научных вычислений. Она предоставляет мощный N-мерный массив (ndarray), а также широкий набор функций для

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем