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
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ć