Parallel task graph framework.
Project description
TaskGraph:
About TaskGraph
TaskGraph is great.
TaskGraph Dependencies
Task Graph is written in pure Python, but if the psutils package is installed the distributed multiprocessing processes will be niced.
Example Use
Install taskgraph with
pip install taskgraph
Then
def _create_list_on_disk(value, length, target_path):
"""Create a numpy array on disk filled with value of `size`."""
target_list = [value] * length
pickle.dump(target_list, open(target_path, 'wb'))
def _sum_lists_from_disk(list_a_path, list_b_path, target_path):
"""Read two lists, add them and save result."""
list_a = pickle.load(open(list_a_path, 'rb'))
list_b = pickle.load(open(list_b_path, 'rb'))
target_list = []
for a, b in zip(list_a, list_b):
target_list.append(a+b)
pickle.dump(target_list, open(target_path, 'wb'))
# create a taskgraph that uses 4 multiprocessing subprocesses when possible
task_graph = taskgraph.TaskGraph(self.workspace_dir, 4)
target_a_path = os.path.join(self.workspace_dir, 'a.dat')
target_b_path = os.path.join(self.workspace_dir, 'b.dat')
result_path = os.path.join(self.workspace_dir, 'result.dat')
result_2_path = os.path.join(self.workspace_dir, 'result2.dat')
value_a = 5
value_b = 10
list_len = 10
task_a = task_graph.add_task(
target=_create_list_on_disk,
args=(value_a, list_len, target_a_path),
target_path_list=[target_a_path])
task_b = task_graph.add_task(
target=_create_list_on_disk,
args=(value_b, list_len, target_b_path),
target_path_list=[target_b_path])
sum_task = task_graph.add_task(
target=_sum_lists_from_disk,
args=(target_a_path, target_b_path, result_path),
target_path_list=[result_path],
dependent_task_list=[task_a, task_b])
sum_task.join()
# expect that result is a list `list_len` long with `value_a+value_b` in it
result = pickle.load(open(result_path, 'rb'))
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.
Source Distribution
taskgraph-0.2.5.tar.gz
(6.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file taskgraph-0.2.5.tar.gz.
File metadata
- Download URL: taskgraph-0.2.5.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24a4d4e1c4167a8dfd7a7db880f4e2d102eb6ef7521d9a702f6c4941858287b5
|
|
| MD5 |
ebd31b8dde4c5e04c4c6afb94cea8b2d
|
|
| BLAKE2b-256 |
7c0548284e426c773f6cfcff21d3c03ea32f7772bdc74fc7a34af87ef94e2274
|
File details
Details for the file taskgraph-0.2.5-py2-none-any.whl.
File metadata
- Download URL: taskgraph-0.2.5-py2-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a73fe2944cb9aa97b558ae5c54c9fd3d76bf375a1cb1519e410c8df56a150a0
|
|
| MD5 |
1632966016979a589d16ea9f18b7e254
|
|
| BLAKE2b-256 |
7c99de7ee715a853943d9135886b5246b11bb57f6acab0c6ab9546418e3c25ae
|