comparison 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
comparison
equal deleted inserted replaced
50:983769fba767 60:d64a8c189a77
1 import asyncio
2 import random
3
4
5 class database:
6 def __init__(self):
7 self.values = 0
8 self._lock = asyncio.Lock()
9
10 def get(self):
11 return self.values
12
13 def set(self, values):
14 self.values = values
15
16
17 async def add(number, db: database, random_wait: int):
18 async with db._lock:
19 current = db.get()
20 await asyncio.sleep(random.random() * 0.05)
21 db.set(current + number)
22
23
24 async def main():
25 db = database()
26 tasks = []
27 for i in range(100):
28 tasks.append(asyncio.create_task(
29 add(i, db, random.randint(1, 5))
30 ))
31 await asyncio.gather(*tasks)
32 print(db.get())
33 print(sum([i for i in range(100)]))
34
35 asyncio.run(main())
36