Skip to main content

PyBackground

PyBackground is

PyBackground supports to

  • execute tasks using thread pool
  • run in the background (or foreground)
  • use @task decorator to define task

Quickstart

Define your functions:

import time

def now(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )

def utcnow(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.gmtime()) )

Create a PyBackground scheduler and start executing your functions:

import pybackground

sched = pybackground.BackgroundScheduler()
sched.start(now, args=(1,))
sched.start(utcnow, args=(1,))

Shutdown the scheduler:

sched.shutdown(wait=True)

Handle with the infinite loops

Let's work based on now(cost) as an example:

import pybackground

sched = pybackground.BackgroundScheduler()
print(sched.stopped)

def timer(interval=3):
    while not sched.stopped:
        now()

sched.start(timer, args=(3,))

timer(interval) then runs forever in a seperate thread. When you'd like to terminate it, shutdown the scheduler as usual:

sched.shutdown(wait=True)

Play with the @task decorator

Use @task decorator to define your functions and start executing them, scheduling now(cost) and utcnow(cost) as an example:

import pybackground

sched = pybackground.BackgroundScheduler()

import time

@pybackground.task(sched)
def now(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )

now.start(cost=1)

@pybackground.task(sched)
def utcnow(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.gmtime()) )

utcnow.start(cost=1)

Shutdown the scheduler in normal way:

sched.shutdown(wait=True)

Install PyBackground

$ pip install pybackground

Documentation

BackgroundScheduler/BlockingScheduler

class pybackground.BackgroundScheduler/BlockingScheduler(max_worker=<num_cpu_cores>)

max_worker is set for ThreadPoolExecutor, default value is the number of CPU cores.

  • stopped

    The scheduler is stopped or not, True (default) or False.

  • latest_id

    The latest task id, which may be useful for pybackground.BlockingScheduler.

  • task

    The task id, Task object (collections.namedtuple('Task', 'fn, args, kwargs')) dictionary, {} as default.

  • future

    The task id, Future object dictionary, {} as default.

  • start(fn, args=(), kwargs={})

    Let scheduler start executing your function using thread pool in the background (or foreground). It returns corresponding task id.

  • shutdown(wait=True)

    Shutdown the scheduler.

task

class pybackground.task(scheduler)
  • Use @task decorator to define your functions and start executing them:

    @task(scheduler)
    def fn(args, kwargs):
        pass
    
    fn.start(*args, **kwargs)
    

    fn.start(*args, **kwargs) is equivaluent to sheduler.start(fn, args, kwargs) using normal function definition.

Related Projects

Metadata

Release files for PyBackground 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyBackground 0.1.2
File Size Uploaded
PyBackground-0.1.2.tar.gz 3.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyBackground 0.1.2
File Interpreter ABI Platform
PyBackground-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 8.5 kB

Release files / PyBackground-0.1.2.tar.gz

Download URL PyBackground-0.1.2.tar.gz
Size 3.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a8025039a4236253e045a7e87af1013098412d068151b29ea3ad6f38c83b3650
BLAKE2b-256 checksum
How to use checksums
476826195c3f8870de985ddc5fe20ecc857c91965fb31939b05348e3e99ca5d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

Release files / PyBackground-0.1.2-py3-none-any.whl

Download URL PyBackground-0.1.2-py3-none-any.whl
Size 5.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
52537f7a2787d91dde9f781687588697b34ad63fc9288d425c39afc879f57b07
BLAKE2b-256 checksum
How to use checksums
dc19b731ffcaa6b7d665fb1da53aebf8f5d4972a4fb6caab04980a41a552da13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page