Skip to main content

None

Project description

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.

History

0.1.0 (2019-05-10)

  • First release on PyPI.

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

cleanroom-0.4.2.tar.gz (13.6 kB view hashes)

Uploaded Source

Built Distribution

cleanroom-0.4.2-py2.py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 2 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