Parallize is a Python package that provides utilities to parallelize both synchronous and asynchronous functions using the `concurrent.futures.ProcessPoolExecutor`.
Project description
Parallize
Parallize is a Python package that provides utilities to parallelize both synchronous and asynchronous functions using the concurrent.futures.ProcessPoolExecutor
. This allows you to execute functions in separate processes, leveraging multiple CPU cores for improved performance.
Features
- Parallelize Synchronous Functions: Execute synchronous functions in parallel using multiple processes.
- Parallelize Asynchronous Functions: Execute asynchronous functions in parallel using multiple processes.
- Customizable Worker Count: Specify the maximum number of worker processes to use, or let the package use the number of available CPU cores by default.
Parallize
Parallize is a Python package that provides utilities to parallelize both synchronous and asynchronous functions using the concurrent.futures.ProcessPoolExecutor
. This allows you to execute functions in separate processes, leveraging multiple CPU cores for improved performance.
Features
- Parallelize Synchronous Functions: Execute synchronous functions in parallel using multiple processes.
- Parallelize Asynchronous Functions: Execute asynchronous functions in parallel using multiple processes.
- Customizable Worker Count: Specify the maximum number of worker processes to use, or let the package use the number of available CPU cores by default.
Mini benchmark
- parallel are the same function but with @parallize decorator or parallize function Here are the benchmark results comparing serial and parallel execution times:
Test Case | Serial Execution Time | Parallel Execution Time | Speedup |
---|---|---|---|
test_aparallize |
0:00:04.073584 | 0:00:00.017007 | 239.5x |
test_aparallize_decorator |
0:00:04.027461 | 0:00:00.014918 | 269.9x |
test_parallize |
0:00:04.057500 | 0:00:00.013410 | 302.6x |
test_parallize_decorator |
0:00:04.042075 | 0:00:00.015465 | 261.4x |
Installation
To install Parallize, you can use pip:
pip install parallize
Usage
Parallelizing Synchronous Functions Using Decorator
To parallelize a synchronous function, use the parallize
decorator:
from parallize import parallize
@parallize
def my_function(x, y):
return x + y
# Call the function as usual
result = my_function(1, 2)
print(result) # This will be executed in a separate process
Parallelizing Asynchronous Functions Using Decorator
To parallelize an asynchronous function, use the aparallize
decorator:
import asyncio
from parallize import aparallize
@aparallize
async def my_async_function(x, y):
await asyncio.sleep(1)
return x + y
# Call the function as usual
result = my_async_function(1, 2)
print(result) # This will be executed in a separate process
Another usage without decorator
from parallize import parallize
def my_function(x, y):
return x + y
# Call the function as usual
result = parallize(my_function)(1, 2)
print(result) # This will be executed in a separate process
Customizing the Number of Workers
You can specify the maximum number of worker processes to use by passing the max_workers
argument to the decorator:
@parallize(max_workers=4)
def my_function(x, y):
return x + y
@aparallize(max_workers=4)
async def my_async_function(x, y):
await asyncio.sleep(1)
return x + y
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Issues
If you encounter any issues or have suggestions for improvements, please open an issue on the GitHub repository.
Acknowledgments
- Thanks to the Python community for providing powerful tools and libraries for parallel processing.
@vikyw89-20240804
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
File details
Details for the file parallize-0.1.3.tar.gz
.
File metadata
- Download URL: parallize-0.1.3.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-39-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6db651b187fdaa7ca7eb48c7553a4113a54e0cc805b1ac29e9e4e6de618893b |
|
MD5 | 1793a316e3e26d9080700a21e5f2a833 |
|
BLAKE2b-256 | 088a680779fb35edc9687fa2aa48b77f673ba8d14cc6c7e11f91ad2f2c81e9b0 |
File details
Details for the file parallize-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: parallize-0.1.3-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-39-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67e1a81fe3080a7f6b837ecddcba2962d7a8fb5e7f9f12e8eab6ca6d6821a2ea |
|
MD5 | d3130736e5fefaffea1406e5c001bd27 |
|
BLAKE2b-256 | a2419bac0a95ffca000605ab7e85b68a84228ea32604b6041a0dc9ad7cb06b68 |