🔍 Эффективность использования Generators vs. List Comprehensions в Python
📌 Этот код демонстрирует два подхода к созданию последовательностей в Python: списковые включения и генераторы.
Списковые включения создают списки, занимая память под все элементы сразу, тогда как генераторы создают элементы по мере необходимости, экономя память.
Генераторы полезны при работе с большими данными, когда важно снижать нагрузку на оперативную память.
Подпишись 👉🏻 @KodduuPython 🤖
def list_comprehension_example(n: int):
return
def generator_example(n: int):
return (x * x for x in range(n))
# Пример использования
if __name__ == "__main__":
n = 10**6
# Использование спискового включения
squares_list = list_comprehension_example(n)
print(f"Сгенерирован список квадратов длиной {len(squares_list)}")
# Использование генератора
squares_generator = generator_example(n)
print("Сгенерирован генератор квадратов")
# Пример итерации по генератору
sum_of_squares = sum(squares_generator)
print(f"Сумма квадратов до {n}: {sum_of_squares}")
📌 Этот код демонстрирует два подхода к созданию последовательностей в Python: списковые включения и генераторы.
Списковые включения создают списки, занимая память под все элементы сразу, тогда как генераторы создают элементы по мере необходимости, экономя память.
Генераторы полезны при работе с большими данными, когда важно снижать нагрузку на оперативную память.
Подпишись 👉🏻 @KodduuPython 🤖
👍1
🔄 Асинхронное программирование vs. многопоточность в Python
📌 Этот код демонстрирует различия между асинхронным программированием и многопоточностью в Python для выполнения сетевых запросов.
Асинхронная функция
в то время как синхронная функция
Оба подхода эффективны для задач ввода-вывода, но выбор между ними зависит от архитектуры приложения и требований к производительности.
Подпишись 👉🏻 @KodduuPython 🤖
import asyncio
import concurrent.futures
import requests
async def fetch_url_async(url: str) -> str:
loop = asyncio.get_event_loop()
with concurrent.futures.ThreadPoolExecutor() as pool:
response = await loop.run_in_executor(pool, requests.get, url)
return response.text
def fetch_url_sync(url: str) -> str:
response = requests.get(url)
return response.text
async def main():
url = "https://www.example.com"
# Асинхронный вызов
async_result = await fetch_url_async(url)
print("Асинхронный результат получен")
# Синхронный вызов
with concurrent.futures.ThreadPoolExecutor() as executor:
future = executor.submit(fetch_url_sync, url)
sync_result = future.result()
print("Синхронный результат получен")
if __name__ == "__main__":
asyncio.run(main())
📌 Этот код демонстрирует различия между асинхронным программированием и многопоточностью в Python для выполнения сетевых запросов.
Асинхронная функция
fetch_url_async использует asyncio и ThreadPoolExecutor для выполнения запросов без блокировки основного потока,в то время как синхронная функция
fetch_url_sync выполняет их в отдельном потоке. Оба подхода эффективны для задач ввода-вывода, но выбор между ними зависит от архитектуры приложения и требований к производительности.
Подпишись 👉🏻 @KodduuPython 🤖