Українська
Відкрити в Telegram
PPython Materials For Beginners Chat

Python Materials For Beginners Chat

@python_code_ua · група · Технології · в індексі з 2026-04-17
16учасників
3пишуть за 30 днів
6повідомлень за 30 днів
327повідомлень в індексі
  1. P
    Python Materials For Beginners Chat
    Фотографія
    натисніть — покажемо
    Скріншот з відео
Уся гілка · 1 відповідь →
P
Посилання
натисніть — покажемо
Підбірка відео по конкурентності: Асинхронний Пайтон за 5 хвилин / Python - AsyncIO Введення у Асинхронне Програмування - Процеси, Потоки, GIL та Asyncio Основи роботи з Процесами та Потоками у Пайтоні #asyncio
1 · 243 ·
  1. P
    Python Materials For Beginners Chat
    Фотографія
    натисніть — покажемо
    Малюнок з відео.
Уся гілка · 1 відповідь →
P
На жаль в багатьох відео пояснення асинхронки у python якесь не дуже (у тому числі у відео що я привів вище). Чомусь багато авторів лізуть під капот діставати генератори, які не дуже й то пояснюють основну суть. На мою думку варто більше акцентувати свою увагу на розумінні IO-bound та CPU-bound задачах. Також важливі моменти asyncio.gather та asyncio.wait, asyncio.wait_for які як раз дають змогу отримувати виграш у часі виконання програми за рахунок IO-bound. #asyncio
225 ·
  1. A
    найкращий гайд по асинхронці в молчанова, шкода що руснявий(
    1. P
      Python Materials For Beginners Chat
      У русні як я пам'ятаю наче те саме - генератори і всяке непотрібне.
Уся гілка · 2 відповіді →
P
I/O-bound задача (Input/Output bound — задача, обмежена вводом-виводом) — це тип задач у програмуванні, під час виконання яких процесор більшість часу простоює в очікуванні, поки завершиться зовнішня операція. У таких задачах швидкість виконання програми залежить не від потужності процесора (CPU), а від швидкості зовнішніх систем чи пристроїв. До I/O-bound можна віднести: 1. Роботу з мережею (у тому числі HTTP-запити та роботу з БД). 2. Роботу з пристроями (наприклад, роботу через serial port). 3. Роботу з файлами. Операційна система надає спеціальний набір функцій для асинхронної роботи, які зазвичай називають неблокуючими (non-blocking). Python будує над ними свою обгортку яка підтримує синтаксис async/await #asyncio
209 ·
P
Бібліотеки httpx і curl_cffi (на відміну від requests) надають як синхроний так і асинхронний інтерфейси: import httpx def main(): with httpx.Client() as client: response = client.get("https://httpbin.org/get") print(response.status_code) main() import asyncio import httpx async def main(): async with httpx.AsyncClient() as client: response = await client.get("https://httpbin.org/get") print(response.status_code) asyncio.run(main()) За виключенням синтаксису async/await і запуску через asyncio.run різниці немає. І що варто підкреслити не має виграшу у часі виконання. Обидва приклади відправляють HTTP запит на сервер, а потім чекають від нього відповіді. #asyncio
247 ·
P
Фотографія
натисніть — покажемо
Виграшу у часі виконання. За рахунок неблокуючих операцій ми можемо відправити запит на сервер, але не чекати відповіді - робити іншу задачу. async with httpx.AsyncClient() as client: task = asyncio.create_task( client.get("https://example.com/") ) # поки запит обробляється, ми # не чекаємо відповіді, а робимо іншу задачу # наприклад інший запит або якісь обчислення # тут пізніше отримуємо відповідь response = await task print(response.status_code) #asyncio #create_task
282 ·
P
Виграш у часі виконання за рахунок одночасного очікування відповідей. asyncio.gather import time import asyncio import httpx # Ключ від безкоштовного апі https://app.reqres.in API_KEY = "free_user_****************" async def main(): async with httpx.AsyncClient() as client: client.headers["x-api-key"] = API_KEY start = time.monotonic() responses = await asyncio.gather( client.get("https://reqres.in/api/users?delay=1"), # запит 1с client.get("https://reqres.in/api/users?delay=3"), # запит 3с client.get("https://reqres.in/api/users?delay=2"), # запит 2с ) print(f"Elapsed: {time.monotonic() - start:.2f} s") print("Status codes: ", [r.status_code for r in responses]) if __name__ == "__main__": asyncio.run(main()) Вивід: Elapsed: 3.30 s Status codes: [200, 200, 200] API app.reqres.in дозволяє задати час відповіді для кожного запиту (1, 3 та 2 с). Це дає можливість побачити перевагу асинхронності, коли запити виконуються групою й відповіді очікуються одночасно. Якби ми робили запити послідовно, час виконання становив би 1 + 3 + 2 = ~6 с. Проте завдяки асинхронності ми досягли результату ~3,3 с, що співмірне з часом найдовшого запиту. #asyncio #gather
381 ·
P
Посилання
натисніть — покажемо
Тут на DOU рекламують наче новий сервіс с задачками. Поки немає часу та бажання дивитись, але якщо хтось пробував/спробує - відпишіть як воно, норм або черговий стрьом? https://genepy.org/exercises/sapin
246 ·
  1. P
    Python Materials For Beginners Chat
    [40, 50]
Уся гілка · 1 відповідь →
  1. P
    Python Materials For Beginners Chat
    wtf?
Уся гілка · 1 відповідь →

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо