Streamlined multi-threaded process acceleration
Project description
warpcore
Streamlined multi-threaded process acceleration
When working with software that needs to be performant, it’s challenging to deal with all the pitfalls of multi-threading while balancing code stability.
Smoothing out the bumps in the road to multi-threading is the primary goal of the project. It’s just that simple.
Installation
OS X, Linux & Windows:
pip install warpcore
Usage Examples
List Operations
- Build a list of arguments that will be passed to a designated function.
jobs = []
jobs.append("Picard")
jobs.append("Janeway")
jobs.append("Kirk")
jobs.append("Sisko")
jobs.append("Archer")
- Create a function that will iterate over the list:
def do_the_thing(name):
print(f"Star Fleet Captain {name}")
- Create a single-threaded version to test:
for name in jobs:
do_the_thing(name)
- Once that works, convert the for-loop into a warpcore call
warpcore.list_engage(jobs, do_the_thing)
Full example:
from warpcore.engineering import WarpCore
def do_the_thing(name):
print(f"Star Fleet Captain {name}")
jobs = []
jobs.append("Picard")
jobs.append("Janeway")
jobs.append("Kirk")
jobs.append("Sisko")
jobs.append("Archer")
# Single-threaded operation (for testing/debug)
# for name in jobs:
# do_the_thing(name)
# Multi-threaded operation (for normal operation)
warpcore = WarpCore()
warpcore.list_engage(jobs, do_the_thing)
Please refer to example0.py and example1.py for basic and more advanced usage examples respectively.
Dictionary Operations
- Build a dict of arguments that will be passed to a designated function.
database = {
"Picard": "USS Enterprise-D",
"Janeway": "USS Voyager",
"Kirk": "USS Enterprise-A",
"Sisko": "Deep Space 9",
"Archer": "Enterprise NX-01"
}
- Create a function that will iterate over the dictionary:
*Note when using dicts, make sure your worker function accepts the key
and value
as arguments. (See below)
def do_the_thing(key, value):
print(f"Star Fleet Captain {key} is/was in command of {value}")
- Create a single-threaded version to test:
for key, value in database.items():
do_the_thing(key, value)
- Once that works, convert the for-loop into a warpcore call
warpcore.dict_engage(database, do_the_thing)
Full example:
from warpcore.engineering import WarpCore
def do_the_thing(key, value):
print(f"Star Fleet Captain {key} is/was in command of {value}")
database = {
"Picard": "USS Enterprise-D",
"Janeway": "USS Voyager",
"Kirk": "USS Enterprise-A",
"Sisko": "Deep Space 9",
"Archer": "Enterprise NX-01"
}
# Single-threaded operation (for testing/debug)
# for key, value in database.items():
# do_the_thing(key, value)
# Multi-threaded operation (for normal operation)
warpcore = WarpCore()
warpcore.dict_engage(jobs, do_the_thing)
Meta
Brandon Blackburn – PGP Encrypted Chat @ Keybase
Distributed under the Apache 2.0 license. See LICENSE
for more information.
TL;DR: For a human-readable & fast explanation of the Apache 2.0 license visit: http://www.tldrlegal.com/l/apache2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.