Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika koszotorobur w Python

Fanatyk

w Python

11piorunów

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.

Komentarze (2)

Wirtuoz0piorunów

Brakuje tutaj kolorowania składni :d

Fanatyk1piorunów

@hejto - @rayros mówi, że brakuje tutaj kolorowania składni :thinking_face:.
A brakuje przede wszystkim możliwość umieszczania bloków kodu.