GithubHelp home page GithubHelp logo

cleanroom's Introduction

cleanroom

Install:

pip install cleanroom

Create instance in a new process and proxy all operations:

import os
import time
from cleanroom import create_instance, CleanroomArgs


class Cal:

    def __init__(self, base):
        self.base = base

    def inc(self):
        self.base += 1
        return self.base

    def pid(self, sleep=None):
        if sleep:
            time.sleep(sleep)

        return os.getpid()


cal = create_instance(Cal, CleanroomArgs(0))

print('Parent PID: ', os.getpid())
print('Cal PID: ', cal.pid())

print('inc: ', cal.inc())
print('inc: ', cal.inc())

Output:

Parent PID:  22239
Cal PID:  22272
inc:  1
inc:  2

Create multiple instances under the random_access scheduler:

from cleanroom import create_scheduler, create_instances_under_scheduler


scheduler = create_scheduler(instances=5, scheduler_type='random_access')
create_instances_under_scheduler(scheduler, Cal, CleanroomArgs(0))

print('Parent PID: ', os.getpid())

for _ in range(20):
    pid = scheduler.pid(sleep=1)
    print(time.ctime(), 'Cal PID:', pid)

Output:

Parent PID:  4376
Thu May 23 14:00:59 2019 Cal PID: 4399
Thu May 23 14:01:00 2019 Cal PID: 4403
Thu May 23 14:01:01 2019 Cal PID: 4397
Thu May 23 14:01:02 2019 Cal PID: 4397
Thu May 23 14:01:03 2019 Cal PID: 4403
Thu May 23 14:01:04 2019 Cal PID: 4399
Thu May 23 14:01:05 2019 Cal PID: 4395
Thu May 23 14:01:06 2019 Cal PID: 4401
Thu May 23 14:01:07 2019 Cal PID: 4399
Thu May 23 14:01:08 2019 Cal PID: 4395
Thu May 23 14:01:09 2019 Cal PID: 4401
Thu May 23 14:01:10 2019 Cal PID: 4401
Thu May 23 14:01:11 2019 Cal PID: 4403
Thu May 23 14:01:12 2019 Cal PID: 4395
Thu May 23 14:01:13 2019 Cal PID: 4397
Thu May 23 14:01:14 2019 Cal PID: 4403
Thu May 23 14:01:15 2019 Cal PID: 4401
Thu May 23 14:01:16 2019 Cal PID: 4395
Thu May 23 14:01:17 2019 Cal PID: 4395
Thu May 23 14:01:18 2019 Cal PID: 4397

Create multiple instances under the batch_random_access scheduler:

scheduler = create_scheduler(instances=5, scheduler_type='batch_random_access')
create_instances_under_scheduler(scheduler, Cal, CleanroomArgs(0))

print('Parent PID: ', os.getpid())

for pid in scheduler.pid(CleanroomArgs(sleep=1) for _ in range(20)):
    print(time.ctime(), 'Cal PID:', pid)

Output:

Parent PID:  4376
Thu May 23 14:04:47 2019 Cal PID: 4429
Thu May 23 14:04:47 2019 Cal PID: 4433
Thu May 23 14:04:47 2019 Cal PID: 4435
Thu May 23 14:04:48 2019 Cal PID: 4433
Thu May 23 14:04:48 2019 Cal PID: 4437
Thu May 23 14:04:49 2019 Cal PID: 4429
Thu May 23 14:04:49 2019 Cal PID: 4433
Thu May 23 14:04:49 2019 Cal PID: 4437
Thu May 23 14:04:49 2019 Cal PID: 4431
Thu May 23 14:04:49 2019 Cal PID: 4435
Thu May 23 14:04:50 2019 Cal PID: 4429
Thu May 23 14:04:51 2019 Cal PID: 4431
Thu May 23 14:04:51 2019 Cal PID: 4435
Thu May 23 14:04:51 2019 Cal PID: 4431
Thu May 23 14:04:51 2019 Cal PID: 4437
Thu May 23 14:04:53 2019 Cal PID: 4429
Thu May 23 14:04:53 2019 Cal PID: 4431
Thu May 23 14:04:53 2019 Cal PID: 4429
Thu May 23 14:04:53 2019 Cal PID: 4437
Thu May 23 14:04:53 2019 Cal PID: 4437

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.