Skip to main content

Lightweight library for building concurrent systems.

Project description

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()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rosny-0.1.0.tar.gz (12.0 kB view hashes)

Uploaded Source

Built Distribution

rosny-0.1.0-py3-none-any.whl (10.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page