Kodduu Python
1.06K subscribers
317 photos
28 videos
191 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
🔍 Эффективность использования Generators vs. List Comprehensions в Python


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


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 🤖