示例#1
0
文件: __main__.py 项目: miraclx/rodio
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")
示例#2
0
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()
示例#3
0
import asyncio
from rodio import EventLoop

process = EventLoop(block=False)


async def asyncfun1():
    print('asuncfun1 waiting 2 secs')
    await asyncio.sleep(2)
    print('asuncfun1 done waiting !')


async def asyncfun2():
    print('asuncfun2 waiting 2 secs')
    await asyncio.sleep(2)
    print('asuncfun2 done waiting !')


def queueAsyncFns():
    process.nextTick([asyncfun1, asyncfun2])


def actingfunction():
    print("helloworld")
    process.nextTick([queueAsyncFns, lambda: process.scheduleExit()])


print("before start")
process.nextTick(actingfunction)
print("after start")
示例#4
0
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")
示例#5
0
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")
示例#6
0
def main():
    process = EventLoop(self_pause=False, shared_queue=False)
    module = process.load_module(sys.argv[1], block=True)
    process.terminate()
示例#7
0
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=False) as loop:
    loop.nextTick(lambda: printfromprocess("hello"))
    loop.nextTick(lambda: printfromprocess("world"))
    loop.nextTick(decoy)

printfromprocess("main exit")
示例#8
0
文件: main.py 项目: miraclx/rodio
import asyncio
from rodio import EventLoop

process = EventLoop()


def normalfunction():
    print("normalfunction from within the eventloop")


async def normalasyncfunction1():
    print("normalasyncfunction1 called from within the eventloop")


async def normalasyncfunction2():
    print("normalasyncfunction2 called from within the eventloop")


async def awaitingasyncfunction1():
    print('awaitingasyncfunction1 will wait for 2 seconds')
    await asyncio.sleep(2)
    print('awaitingasyncfunction1 done waiting for 2 seconds')


async def awaitingasyncfunction2():
    print('awaitingasyncfunction2 will wait for 2 seconds')
    await asyncio.sleep(2)
    print('awaitingasyncfunction2 done waiting for 2 seconds')


print("=====================================================")
示例#9
0
import threading
from rodio import EventLoop, get_current_thread

process = EventLoop()

process.start()


def queuedFn(name):
    print(f"hello from queued function by {name}")


def queueDecoy():
    thread = get_current_thread()
    print(f"queue from {thread.name}")
    process.nextTick(queuedFn, thread.name)


threads = []
for i in range(10):
    thread = threading.Thread(name=f"thread{i}", target=queueDecoy)
    thread.start()
    threads.append(thread)

[thread.join() for thread in threads]
process.scheduleExit()