{ "info": { "author": "Stefan Peterson", "author_email": "stefan.peterson@rubico.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "Ampeg\n=====\n\nAmpeg is a simple and lightweight package for parallel computation. It provides\nsimple functions for scheduling and execution of a set of dependent or\nindependent computational tasks over multiple processes using the \n``multiprocessing`` package.\n\nRequirements\n------------\n\nPython 2.7 or later\n\nPython 3.4 or later\n\nInstallation\n------------\n\npip install ampeg\n\nUsage\n-----\n\nAmpeg exposes a scheduling function ``earliest_finish_time``, an execution\nfunction ``execute_task_lists`` and a ``Dependency`` class. The former takes a\ndirected acyclic graph (DAG) and a number of processes and produces a set of\ntask lists for each process and a corresponding set of task IDs for translating\nthe execution result. These two form the input to ``execute_task_lists``, which\nreturns a dict with the result of each task in the original graph.\n\nThe DAG is represented by a python dict of vertices where each key is the ID of\na task and each value is a triple of (function, args or kwargs, computation\ncost). Edges are implicitly defined by instances of the ``Dependency`` class in\nthe args or kwargs.\n\nA simple usage example computing (3^2 + 4^2) - (3^2 * 10/2):\n\n```\n>>> import ampeg as ag\n>>> n_processes = 3\n>>> my_graph = {0: (lambda x: x**2, 3, 10.8),\n 1: (lambda x: x**2, 4, 10.8),\n 2: (lambda x: x/2, 10, 11),\n 3: (lambda x, y: x + y, (ag.Dependency(0, None, 1),\n ag.Dependency(1, None, 1), 10.7),\n 4: (lambda x, y: x*y, (ag.Dependency(0, None, 1),\n ag.Dependency(2, None, 1)), 10.8),\n 5: (lambda x, y: x - y, (ag.Dependency(3, None, 1),\n ag.Dependency(4, None, 1)), 10.9)}\n>>> task_lists, task_ids = ag.earliest_finish_time(my_graph, n_processes)\n>>> ag.execute_task_lists(task_lists, task_ids)\n{0: 9, 1: 16, 2: 5, 3: 25, 4: 45, 5: -20}\n```\n\nThe Dependency class\n--------------------\n\nA dependency is a triple of (task ID or index, key (if any) and communication\ncost). The key may be a single key, index or slice, or it may be an iterable of\nsuch values to be applied in sequence. For example, the key ``('values', 2)``\nextracts the value 5 from the dict ``{'values': [1, 3, 5]}``. Dependency\ninstances are created by ``ampeg.Dependency(task, key, cost)`` where cost is\noptional and defaults to 0.\n\nExceptions\n----------\n\nAmpeg catches exceptions raised by individual tasks, returning them as results\nencapsulated in the ``Err`` class. When an ``Err`` instance is found among the\ndependencies for a task, the result for this task will be an ``Err`` instance\nencapsulating a ``DependencyError``.\n\nWindows\n-------\nNote that under Windows, the functions and their arguments must all be \npicklable.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/sjpet/ampeg/tarball/0.1.3", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sjpet/ampeg", "keywords": "machine learning data mining out-of-memory", "license": "GPL-3.0", "maintainer": "", "maintainer_email": "", "name": "ampeg", "package_url": "https://pypi.org/project/ampeg/", "platform": "", "project_url": "https://pypi.org/project/ampeg/", "project_urls": { "Download": "https://github.com/sjpet/ampeg/tarball/0.1.3", "Homepage": "https://github.com/sjpet/ampeg" }, "release_url": "https://pypi.org/project/ampeg/0.1.3/", "requires_dist": [ "six", "pytest ; extra == 'dev'", "tox ; extra == 'dev'" ], "requires_python": "", "summary": "A simple and lightweight package for parallel computing", "version": "0.1.3" }, "last_serial": 4517178, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "bf16d6ccbb6db6d4e4cb498d5bc8b477", "sha256": "b0f9bd46d7c8e834abf0ff2710da34004bbf0b375730e69cc586284f558ea093" }, "downloads": -1, "filename": "ampeg-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bf16d6ccbb6db6d4e4cb498d5bc8b477", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42932, "upload_time": "2018-11-21T09:36:14", "url": "https://files.pythonhosted.org/packages/dc/09/30bb945cf96652adc537088f33f7e4fda541ab67f64c6e657712088c49f3/ampeg-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8470ea3eb4f50395e1fca49cc651a870", "sha256": "5e61a593e5b8496ef2767ec236181907483f4cb0ea85b4fc334a069bafbc297b" }, "downloads": -1, "filename": "ampeg-0.1.tar.gz", "has_sig": false, "md5_digest": "8470ea3eb4f50395e1fca49cc651a870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15050, "upload_time": "2018-11-21T09:36:16", "url": "https://files.pythonhosted.org/packages/7a/01/e771848e590e46813d6b8168d5a20d2c079d677027268c5d0f35c273af05/ampeg-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f17e1cdd0b30e3ceef30d65e75bc86d1", "sha256": "4d76474e4d0921b87ac7ae65d6daf84e8cf304ca977a3661f56862fb21db8097" }, "downloads": -1, "filename": "ampeg-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f17e1cdd0b30e3ceef30d65e75bc86d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42971, "upload_time": "2018-11-22T13:27:44", "url": "https://files.pythonhosted.org/packages/e6/80/5a2544be6d97a2065c079da29f076e73e516fc329e4a1b876ee8a1927bea/ampeg-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4532b5ad2380ff0aea3bedc3dfc556cd", "sha256": "af6c9825bd176d2d5f53d272a56084dc7bb6d5d3479286032d274d7b42cf83c3" }, "downloads": -1, "filename": "ampeg-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4532b5ad2380ff0aea3bedc3dfc556cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15064, "upload_time": "2018-11-22T13:27:46", "url": "https://files.pythonhosted.org/packages/a4/b2/d63ece43047bc256f225cce49d7ec25b7f2c756f973dc2553c8a33601054/ampeg-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e90666c3b96d5a9955ed4b3f16ce1774", "sha256": "c4a054a44f4e38f8d0d03399d170538f16113ec34601d9ce6a23f5069048de2a" }, "downloads": -1, "filename": "ampeg-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e90666c3b96d5a9955ed4b3f16ce1774", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42984, "upload_time": "2018-11-22T13:38:38", "url": "https://files.pythonhosted.org/packages/7e/5c/28b01ef22b3bc9ad767cb45df95a91b2e4292f48d0e9ddf53dbe754af36e/ampeg-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e35ee54138f03bd03f6983f5a75c7e1", "sha256": "441fd57c130aacb90d0307d36072f0b0474f79d3b325c200bee0dc54f876661a" }, "downloads": -1, "filename": "ampeg-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6e35ee54138f03bd03f6983f5a75c7e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15063, "upload_time": "2018-11-22T13:38:39", "url": "https://files.pythonhosted.org/packages/5f/ff/ef7142ad185a663ccadc6820a349e0df7d07ea289967f6fcdc31583f3ecd/ampeg-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5826461bafc0449632e419e3a0726318", "sha256": "7f9b91e138505e571a0fb71e3609e8a2bee03db0cc90dc900f196517ea0a523d" }, "downloads": -1, "filename": "ampeg-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5826461bafc0449632e419e3a0726318", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43014, "upload_time": "2018-11-22T13:53:53", "url": "https://files.pythonhosted.org/packages/9b/be/6f14d403facca975f04c03530940e0cb5019ae84d0b83aede09767e94c0d/ampeg-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b09a0e59c0031756e0a08e7a6a37028", "sha256": "d95fda49be7b699440fbf33160de8e1215556b77905904d9842b6c6498c8034f" }, "downloads": -1, "filename": "ampeg-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7b09a0e59c0031756e0a08e7a6a37028", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15096, "upload_time": "2018-11-22T13:53:55", "url": "https://files.pythonhosted.org/packages/b1/c7/78944f6b6307a2f3f5a395eecce1a896c352e1329b015f8c77c6fe583394/ampeg-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5826461bafc0449632e419e3a0726318", "sha256": "7f9b91e138505e571a0fb71e3609e8a2bee03db0cc90dc900f196517ea0a523d" }, "downloads": -1, "filename": "ampeg-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5826461bafc0449632e419e3a0726318", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43014, "upload_time": "2018-11-22T13:53:53", "url": "https://files.pythonhosted.org/packages/9b/be/6f14d403facca975f04c03530940e0cb5019ae84d0b83aede09767e94c0d/ampeg-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b09a0e59c0031756e0a08e7a6a37028", "sha256": "d95fda49be7b699440fbf33160de8e1215556b77905904d9842b6c6498c8034f" }, "downloads": -1, "filename": "ampeg-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7b09a0e59c0031756e0a08e7a6a37028", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15096, "upload_time": "2018-11-22T13:53:55", "url": "https://files.pythonhosted.org/packages/b1/c7/78944f6b6307a2f3f5a395eecce1a896c352e1329b015f8c77c6fe583394/ampeg-0.1.3.tar.gz" } ] }