Kod na uruchamianie funkcji synchronicznych w Pythonie w asynchroniczny sposób:


# Oczywiście warto używać modułów natywnie asynchronicznych od razu jeśli jest to możliwe: https://github.com/timofurrer/awesome-asyncio


import asyncio

import urllib.request


def get_page(url):

‎ ‎ ‎ ‎ with urllib.request.urlopen(url) as f:

‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ return f.read(100).decode('utf-8') # Zwraca jedynie 100 pierwszych znaków dla zobrazowania jako przykład


async def main():

‎ ‎ ‎ ‎ urls = [' https://www.google.pl' for _ in range(10)] # Ta sama strona 10 razy jako przykład - ale tu należy podać swoją listę stron

‎ ‎ ‎ ‎ tasks =[asyncio.to_thread(get_page, url) for url in urls]

‎ ‎ ‎ ‎ return await asyncio.gather(*tasks)


results = asyncio.run(main())

[print(result) for result in results]


Kod działa jedynie z Pythonem 3.9 lub wyższym.

Dla starszych wersji Pythona można użyć staroszkolnego podejścia z ThreadPoolExecutor lub metody run_in_executor dla loop z modułu asyncio.


#technologia #komputery #programowanie #python

Komentarze (2)

rayros

Brakuje tutaj kolorowania składni :d

koszotorobur

@hejto - @rayros mówi, że brakuje tutaj kolorowania składni .

A brakuje przede wszystkim możliwość umieszczania bloków kodu.

Zaloguj się aby komentować