Code: Select all
import asyncio
import random
counter = 0
async def increment(name: str):
global counter
await asyncio.sleep(random.uniform(0, 5)) # yield control to event loop
counter = counter + 1 # write (based on possibly stale value)
print(f"{name}: counter → {counter}")
async def main():
await asyncio.gather(*[increment(f"{i}") for i in range(10000)])
print(f"Final counter (should be 10000): {counter}")
if __name__ == "__main__":
asyncio.run(main())
< /code>
Dies wird am Ende korrekt wiedergegeben. Hier ist ein Beispiel für die letzten Eingabezeilen: < /p>
7825: counter → 9995
8403: counter → 9996
6039: counter → 9997
5887: counter → 9998
9942: counter → 9999
8631: counter → 10000
Final counter (should be 10000): 10000