{ "info": { "author": "Sam McCormack", "author_email": "contact@cabbagedevelopment.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "# Async Process Scheduler\n\n*Current status: BETA. Improved documentation coming soon.*\n\n## Introduction\n\nAsync Process Scheduler is a small Python library which provides a simple, GUI-friendly way to efficiently run many processes while avoiding the drawbacks of a callback-based data flow.\n\nAsync Process Scheduler is compatible with Python 3.6 and higher.\n\n## Installation\n\nInstall by running `pip install AsyncProcessScheduler --user`. \n\nImport with `import scheduler`.\n\n## Usage\n\nAfter adding processes to a `Scheduler` instance, running the processes and getting their results is as simple as `await`-ing `Scheduler.run()`.\n\nHere is an example which shows the general workflow while simplifying the irrelevant code:\n\n```python\nclass MyWindow:\n\n ### [GUI code removed for simplicity.] ###\n\n def start_scheduler(self):\n # Starts the coroutine.\n asyncio.ensure_future(self.coro_run())\n\n async def coro_run(self):\n self.scheduler = Scheduler()\n\n for i in range(10):\n queue = Queue()\n process = Process(target=long_calculation, args=(queue,))\n\n self.scheduler.add_task(Task(process, queue))\n\n # Run all processes and get the results without blocking the GUI.\n all_results = await self.scheduler.run()\n\n ### [Do something with the GUI using the reults.] ###\n ...\n\n\ndef long_calculation(queue):\n ### [Do some long calculations, producing x,y,z.] ###\n queue.put((\n x, y, z # These values will be returned by the scheduler.\n ))\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CabbageDevelopment/async-process-scheduler", "keywords": "async asyncio processing multiprocessing scheduler scheduling processes coroutines gui", "license": "", "maintainer": "", "maintainer_email": "", "name": "AsyncProcessScheduler", "package_url": "https://pypi.org/project/AsyncProcessScheduler/", "platform": "", "project_url": "https://pypi.org/project/AsyncProcessScheduler/", "project_urls": { "Homepage": "https://github.com/CabbageDevelopment/async-process-scheduler", "Source": "https://github.com/CabbageDevelopment/async-process-scheduler" }, "release_url": "https://pypi.org/project/AsyncProcessScheduler/0.1.0b1/", "requires_dist": [ "psutil" ], "requires_python": "~=3.6", "summary": "GUI-friendly library for scheduling processes using coroutines.", "version": "0.1.0b1" }, "last_serial": 6003523, "releases": { "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "1a109810a4295e9e86e9f10729c1eabe", "sha256": "ae1bbf589f9ca79b365a34a8047ac8225ee292e4cd9fc25b8b24eef76e47942e" }, "downloads": -1, "filename": "AsyncProcessScheduler-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "1a109810a4295e9e86e9f10729c1eabe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 9321, "upload_time": "2019-10-20T17:01:05", "url": "https://files.pythonhosted.org/packages/51/b9/2da80195f8fe34a1b95bd89526c14b87a87ae12d5ed22288c61f3150b1a1/AsyncProcessScheduler-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f334f815875a2f59b02b8ce810059fd2", "sha256": "9c78e4f092907a093ece6abe937ebc1dcb4e7d6a27d7cb67d57353aa90597c98" }, "downloads": -1, "filename": "AsyncProcessScheduler-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "f334f815875a2f59b02b8ce810059fd2", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 5725, "upload_time": "2019-10-20T17:01:08", "url": "https://files.pythonhosted.org/packages/5c/08/bbf230bbdf4db30e79ca25aa6e753c5974f1cddfe46004e4e3d86fd9c040/AsyncProcessScheduler-0.1.0b1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1a109810a4295e9e86e9f10729c1eabe", "sha256": "ae1bbf589f9ca79b365a34a8047ac8225ee292e4cd9fc25b8b24eef76e47942e" }, "downloads": -1, "filename": "AsyncProcessScheduler-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "1a109810a4295e9e86e9f10729c1eabe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 9321, "upload_time": "2019-10-20T17:01:05", "url": "https://files.pythonhosted.org/packages/51/b9/2da80195f8fe34a1b95bd89526c14b87a87ae12d5ed22288c61f3150b1a1/AsyncProcessScheduler-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f334f815875a2f59b02b8ce810059fd2", "sha256": "9c78e4f092907a093ece6abe937ebc1dcb4e7d6a27d7cb67d57353aa90597c98" }, "downloads": -1, "filename": "AsyncProcessScheduler-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "f334f815875a2f59b02b8ce810059fd2", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 5725, "upload_time": "2019-10-20T17:01:08", "url": "https://files.pythonhosted.org/packages/5c/08/bbf230bbdf4db30e79ca25aa6e753c5974f1cddfe46004e4e3d86fd9c040/AsyncProcessScheduler-0.1.0b1.tar.gz" } ] }