mirror of https://github.com/nocturn9x/giambio.git
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
import giambio
|
|
|
|
|
|
# A test for context managers
|
|
|
|
|
|
async def countdown(n: int):
|
|
print(f"Counting down from {n}!")
|
|
while n > 0:
|
|
print(f"Down {n}")
|
|
n -= 1
|
|
await giambio.sleep(1)
|
|
# raise Exception("oh no man") # Uncomment to test propagation
|
|
print("Countdown over")
|
|
return 0
|
|
|
|
|
|
async def countup(stop: int, step: int = 1):
|
|
print(f"Counting up to {stop}!")
|
|
x = 0
|
|
while x < stop:
|
|
print(f"Up {x}")
|
|
x += 1
|
|
await giambio.sleep(step)
|
|
print("Countup over")
|
|
return 1
|
|
|
|
|
|
async def main():
|
|
start = giambio.clock()
|
|
try:
|
|
async with giambio.create_pool() as pool:
|
|
pool.spawn(countdown, 10)
|
|
pool.spawn(countup, 5, 2)
|
|
print("Children spawned, awaiting completion")
|
|
except Exception as e:
|
|
print(f"Got -> {type(e).__name__}: {e}")
|
|
print(f"Task execution complete in {giambio.clock() - start:.2f} seconds")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
giambio.run(main)
|