Skip to main content

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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

taskgraph-0.2.5-py2-none-any.whl (8.5 kB view details)

Uploaded Python 2

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

Hashes for taskgraph-0.2.5.tar.gz
Algorithm Hash digest
SHA256 24a4d4e1c4167a8dfd7a7db880f4e2d102eb6ef7521d9a702f6c4941858287b5
MD5 ebd31b8dde4c5e04c4c6afb94cea8b2d
BLAKE2b-256 7c0548284e426c773f6cfcff21d3c03ea32f7772bdc74fc7a34af87ef94e2274

See more details on using hashes here.

File details

Details for the file taskgraph-0.2.5-py2-none-any.whl.

File metadata

File hashes

Hashes for taskgraph-0.2.5-py2-none-any.whl
Algorithm Hash digest
SHA256 4a73fe2944cb9aa97b558ae5c54c9fd3d76bf375a1cb1519e410c8df56a150a0
MD5 1632966016979a589d16ea9f18b7e254
BLAKE2b-256 7c99de7ee715a853943d9135886b5246b11bb57f6acab0c6ab9546418e3c25ae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page