def init(): from rodio.internals.parther import getTransformer from rodio import EventLoop, printfromprocess tx = getTransformer(__file__) printfromprocess("__main__.py init") process = EventLoop("MainEventLoop", self_pause=False, shared_queue=False) process.load_module(tx('./mainmod.py'), block=True) process.terminate() printfromprocess("__main__.py end")
def buildEventLoop(count): if is_within_loop(): parent = get_running_loop() printfromprocess( f"_is_directly_contained: {parent._is_directly_nested}") if count == 10: return process = EventLoop(f'process:{count}') process.nextTick(buildEventLoop, count + 1) process.scheduleExit()
def decoy(): loop = get_current_loop() printfromprocess("heyyo from decoy") printfromprocess("sleeping for 2 secs...") time.sleep(2) printfromprocess("quiting after 3 secs...") time.sleep(3) loop.scheduleExit()
from rodio.internals.parther import getTransformer from rodio import get_running_loop, EventLoop, is_within_loop, printfromprocess tx = getTransformer(__file__) printfromprocess("mainmod.py init") process1 = EventLoop(f"process1", self_pause=False, shared_queue=False) process2 = EventLoop(f"process2", self_pause=False, shared_queue=False) module1 = process1.load_module(tx('./module01.py')) module2 = process2.load_module(tx('./module02.py')) module1.on('complete', lambda process: (process.kill() if not process.ended() else None)) module2.on('complete', lambda process: (process.kill() if not process.ended() else None)) process1.join() process2.join() printfromprocess("mainmod.py exit")
import time from rodio import EventLoop, get_current_loop, printfromprocess def decoy(): loop = get_current_loop() printfromprocess("heyyo from decoy") printfromprocess("sleeping for 2 secs...") time.sleep(2) printfromprocess("quiting after 3 secs...") time.sleep(3) loop.scheduleExit() printfromprocess("main init") with EventLoop(block=True) as loop: loop.nextTick(lambda: printfromprocess("hello")) loop.nextTick(lambda: printfromprocess("world")) loop.nextTick(decoy) printfromprocess("main exit")
async def act1(): printfromprocess("act1 sleeping 2 secs") await asyncio.sleep(2) printfromprocess("act1 done sleeping 2 secs")
import asyncio from rodio import get_running_loop, printfromprocess process = get_running_loop() async def act1(): printfromprocess("act1 sleeping 2 secs") await asyncio.sleep(2) printfromprocess("act1 done sleeping 2 secs") async def act2(): printfromprocess("act2 sleeping 2 secs") await asyncio.sleep(2) printfromprocess("act2 done sleeping 2 secs") process.nextTick(lambda: printfromprocess("module02.py init")) process.nextTick(lambda: printfromprocess("lorem ipsum")) process.nextTick([act1, act2]) process.nextTick(lambda: printfromprocess("dolor sit")) process.nextTick(lambda: printfromprocess("amet consectur")) process.nextTick(lambda: printfromprocess("module02.py exit"))
def normalfunction(): printfromprocess("normalfunction from within the eventloop")
async def awaitingasyncfunction2(): printfromprocess('awaitingasyncfunction2 will wait for 2 seconds') await asyncio.sleep(2) printfromprocess('awaitingasyncfunction2 done waiting for 2 seconds')
async def normalasyncfunction2(): printfromprocess("normalasyncfunction2 called from within the eventloop")
printfromprocess("normalfunction from within the eventloop") async def normalasyncfunction1(): printfromprocess("normalasyncfunction1 called from within the eventloop") async def normalasyncfunction2(): printfromprocess("normalasyncfunction2 called from within the eventloop") async def awaitingasyncfunction1(): printfromprocess('awaitingasyncfunction1 will wait for 2 seconds') await asyncio.sleep(2) printfromprocess('awaitingasyncfunction1 done waiting for 2 seconds') async def awaitingasyncfunction2(): printfromprocess('awaitingasyncfunction2 will wait for 2 seconds') await asyncio.sleep(2) printfromprocess('awaitingasyncfunction2 done waiting for 2 seconds') process.nextTick(lambda: printfromprocess("module01.py init")) process.nextTick(normalfunction) process.nextTick(normalasyncfunction1) process.nextTick(normalasyncfunction2) process.nextTick([awaitingasyncfunction1, awaitingasyncfunction2]) process.nextTick(normalfunction) process.nextTick(lambda: printfromprocess("module01.py exit"))