Skip to main content

No project description provided

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
test_aparallize 0:00:04.073584 0:00:00.017007
test_aparallize_decorator 0:00:04.027461 0:00:00.014918
test_parallize 0:00:04.057500 0:00:00.013410
test_parallize_decorator 0:00:04.042075 0:00:00.015465

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

or

def my_function(x, y):
    return x + y

async def my_async_function(x, y):
    await asyncio.sleep(1)
    return x + y

parallize(my_function,max_workers=4)(1, 2)
aparallize(my_async_function,max_workers=4)(1, 2)

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.1.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file parallize-0.1.1.tar.gz.

File metadata

  • Download URL: parallize-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 801fed03dd6715b3c3795f446b6a28266cdc272bb10aee9f41db855d70f9e00d
MD5 de0cc29244ab6ba099fe444500ce4322
BLAKE2b-256 93116f899f5c90f9460802a4dfdca928defb14002d813e5cbe45119f57a22095

See more details on using hashes here.

File details

Details for the file parallize-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: parallize-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3f47a153d9758971c0001f74bb4c2b7599abd40ffa80c06e47607d20e5aa60a7
MD5 7cb8aa7c8fce68baada45f31e4fc2193
BLAKE2b-256 0cc4863a2a37546fe877b28aed9ef87ca77ddcbf94ae58976c1fedf8c66fd2ce

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