overpass/TASK.md

1.1 KiB

TASK 7:

Wir haben nun einmal einen (noch nicht perfekten aber funktionstüchtigen) Workflow, in welchem wir die Daten von einer externen API (Overpass) holen, daraus POI-Objekte machen und diese als .json auf unserer Festplatte speichern.

Als nächstes versuchen wir den Code zu "parallelisieren" (ThreadPool):

  1. wir bilden ein Modul config.py und lagern dort unseren Konfigurationscode aus
  2. Timer einbauen (Dekorator) -> ist noch unbekannt: zeige ich vor
  3. Code nach vorgegebenem Schema "concurrent" machen -> findet heraus, was in unserem Beispiel der Adapter ist
    • optional: Lock verwenden
from concurrent.futures import ThreadPoolExecutor, as_completed

adapter = CodewarsAdapter()
usernames = [" alice ", "bob", " carol ", " dave "]

with ThreadPoolExecutor(max_workers=4) as pool:
    futures = {pool.submit(adapter.get_user, n): n for n in usernames}

for future in as_completed(futures):
    name = futures[future]
    try:
        user = future.result()
        print(f"{name}: {user.honor}Honor")
    except Exception as exc:
        print(f"{name}: Fehler -- {exc}")