Skip to main content

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

parallize-0.1.3.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

parallize-0.1.3-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

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

Hashes for parallize-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a6db651b187fdaa7ca7eb48c7553a4113a54e0cc805b1ac29e9e4e6de618893b
MD5 1793a316e3e26d9080700a21e5f2a833
BLAKE2b-256 088a680779fb35edc9687fa2aa48b77f673ba8d14cc6c7e11f91ad2f2c81e9b0

See more details on using hashes here.

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

Hashes for parallize-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 67e1a81fe3080a7f6b837ecddcba2962d7a8fb5e7f9f12e8eab6ca6d6821a2ea
MD5 d3130736e5fefaffea1406e5c001bd27
BLAKE2b-256 a2419bac0a95ffca000605ab7e85b68a84228ea32604b6041a0dc9ad7cb06b68

See more details on using hashes here.

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