Skip to main content

Generic Python Decorators for use in any project

Project description

generic-decorators

Generic Python Decorators for use in any project.

Install

generic-decorators is released to public PyPI - generic-decorators. It can be installed using this command:

pip install generic-decorators

Decorators

make_parallel

Summary: runs function in parallel instead of sequencial for loop.

Example

Parallel trigger of functions sample_function with 1 param list_of_post_ids using make_parallel decorator and equivalent sequential trigger using for loop.

def parallel_function_trigger():
    list_of_post_ids = list(range(1, 20))
    return make_parallel(sample_function)(list_of_post_ids)

#equivalent sequencial version
def serial_function_trigger():
    list_of_post_ids = list(range(1, 20))

    # Serial way of calling the function
    results = []
    for post_id in list_of_post_ids:
        res = sample_function(post_id)
        results.append(res)
    return results

You can use below timing decorator to compare time of above parallel and sequential versions.

make_parallel_processes

Description: Similar functionality like make_parallel but uses mulitprocessing instead of threading.

Example

def parallel_function_trigger():
    list_of_post_ids = list(range(1, 20))
    return make_parallel_processes(sample_function)(list_of_post_ids)

timing

Summary: calculate and print how much time function processing took.

Example

@timing
def sleep_n_seconds(n: int):
    time.sleep(n)

sleep_n_seconds(5)

It should print something like this (time can differ):

func:'sleep_n_seconds' args:[(5,), {}] took: 5.0047 sec

singleton

Summary: make class Singleton - class which will have max 1 instance created

Example

@singleton
class MyClass(object):
    """docstring for MyClass"""
    def __init__(self):
        pass

for i in range(0, 10):
    obj = MyClass()
    print(obj)

It should print something like this (all objects of class are the same):

<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>
<__main__.MyClass object at 0x7fc3bc38fc50>

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

generic-decorators-1.0.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

generic_decorators-1.0.3-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file generic-decorators-1.0.3.tar.gz.

File metadata

  • Download URL: generic-decorators-1.0.3.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.0

File hashes

Hashes for generic-decorators-1.0.3.tar.gz
Algorithm Hash digest
SHA256 fb0b9eb7626689b569a427e6bd353672964ebe13d5e6906aff3def452e679e7f
MD5 febd4ca5f82368361dd6eacfd320690a
BLAKE2b-256 b6c6ae4e428807c70a1b97a25424e141d944a63a398d7ff8ba31901947dfd63e

See more details on using hashes here.

File details

Details for the file generic_decorators-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: generic_decorators-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.0

File hashes

Hashes for generic_decorators-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 37bfe07c5196c500fa40d4b2e26d1eb7bd9fc276e2dd06653a91821a19125444
MD5 7ea479e65c182b928248711aad09d8c0
BLAKE2b-256 942f680e3f9f97676f1ab67661c5dc740d2f7ab70621c86f172a73b3e49a6043

See more details on using hashes here.

Supported by

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