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
Built Distribution
Hashes for generic_decorators-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37bfe07c5196c500fa40d4b2e26d1eb7bd9fc276e2dd06653a91821a19125444 |
|
MD5 | 7ea479e65c182b928248711aad09d8c0 |
|
BLAKE2b-256 | 942f680e3f9f97676f1ab67661c5dc740d2f7ab70621c86f172a73b3e49a6043 |