Mercurial
diff grok_interview/test.py @ 60:d64a8c189a77
Merged
| author | June Park <me@mrjunejune.com> |
|---|---|
| date | Sat, 20 Dec 2025 13:56:01 -0500 |
| parents | 68fa88ac73fe |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/grok_interview/test.py Sat Dec 20 13:56:01 2025 -0500 @@ -0,0 +1,36 @@ +import asyncio +import random + + +class database: + def __init__(self): + self.values = 0 + self._lock = asyncio.Lock() + + def get(self): + return self.values + + def set(self, values): + self.values = values + + +async def add(number, db: database, random_wait: int): + async with db._lock: + current = db.get() + await asyncio.sleep(random.random() * 0.05) + db.set(current + number) + + +async def main(): + db = database() + tasks = [] + for i in range(100): + tasks.append(asyncio.create_task( + add(i, db, random.randint(1, 5)) + )) + await asyncio.gather(*tasks) + print(db.get()) + print(sum([i for i in range(100)])) + +asyncio.run(main()) +