Anhang B. Ergänzendes Material

Dieser Anhang enthält einige zusätzliche Codes zu den im Buch vorgestellten Fallstudien. Vielleicht findest du dieses Material hilfreich, um dein Verständnis der Beispiele zu vervollständigen.

Beispiel für Besteck mit Asyncio

"Fallstudie: Roboter und Besteck" analysierte einen Race-Condition-Fehler, der dadurch verursacht wurde, dass mehrere Threads die Besteckdatensätze in der globalen Objektinstanz "Küche" änderten. Der Vollständigkeit halber sehen wir uns an, wie wir eine asynchrone Version der Lösung erstellen könnten .

Es gibt einen speziellen Punkt, den ich in Bezug auf dieBeobachtbarkeit der Gleichzeitigkeit im asyncio Ansatz hervorheben möchte, wie in Beispiel B-1 gezeigt.

Beispiel B-1. Besteckverwaltung mit asyncio
import asyncio

class CoroBot():  1
  def __init__(self):
    self.cutlery = Cutlery(knives=0, forks=0)
    self.tasks = asyncio.Queue()  2

  async def manage_table(self):
    while True:
      task = await self.tasks.get()  3
      if task == 'prepare table':
        kitchen.give(to=self.cutlery, knives=4, forks=4)
      elif task == 'clear table':
        self.cutlery.give(to=kitchen, knives=4, forks=4)
      elif task == 'shutdown':
        return

from attr import attrs, attrib

@attrs ...

Get Asyncio in Python verwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.