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
(
)
:
def
__init__
(
self
)
:
self
.
cutlery
=
Cutlery
(
knives
=
0
,
forks
=
0
)
self
.
tasks
=
asyncio
.
Queue
(
)
async
def
manage_table
(
self
)
:
while
True
:
task
=
await
self
.
tasks
.
get
(
)
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.