Skip to content

lRomul/rosny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bd772a7 · Apr 16, 2024
Apr 16, 2024
Jan 25, 2024
Jan 25, 2024
Apr 16, 2024
Jan 25, 2024
Apr 22, 2021
Jan 25, 2024
Apr 22, 2021
Jun 27, 2021
Nov 25, 2023
Jul 5, 2021
Apr 16, 2024

Repository files navigation

ROSNY

PyPI version Test CodeFactor codecov Downloads

rosny is a lightweight library for building concurrent systems.

Installation

Tested on:

  • Linux
  • Python >= 3.8

From pip:

pip install rosny

From source:

pip install git+https://github.com/lRomul/rosny.git@master

Example

from multiprocessing import Queue
from rosny import ThreadNode, ProcessNode, ComposeNode


class SenderNode(ThreadNode):  # using threading.Thread
    def __init__(self, queue: Queue):
        super().__init__(loop_rate=30)
        self.queue = queue
        self.count = 0

    # run the method in a loop in a separate thread
    def work(self):
        self.queue.put(self.count)
        self.logger.info(f'put {self.count}')
        self.count += 1


class ReceiverNode(ProcessNode):  # using multiprocessing.Process
    def __init__(self, queue: Queue):
        super().__init__()
        self.queue = queue

    # run the method in a loop in a separate process
    def work(self):
        value = self.queue.get(timeout=1)
        self.logger.info(f'get {value}')


class MainNode(ComposeNode):  # merging several nodes
    def __init__(self):
        super().__init__()
        queue = Queue()
        self.sender = SenderNode(queue)
        self.receiver = ReceiverNode(queue)


if __name__ == "__main__":
    node = MainNode()
    node.start()
    node.wait(5)
    node.stop()
    node.join()