{ "info": { "author": "Rene Nejsum, __PYLOTS__", "author_email": "rene@pylots.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Topic :: Software Development" ], "description": "PyWorks - a small concurrent framework for Python\n\n Ever since i first worked with threads in Java 15 years ago, I have been\nstruggeling with the concept. Before that I was used to C and a homegrown \"OS\"\ncalled Daros. It had Task \"preemtive processes\", Messages and Queues. For me\nit was much easier to comprehend the one Task == one thread concept.\nNo synchronized keyword, only place you had to take a little care was if you\nused shared memory (which was rare)\n\n In 2004 we therefore inplemented Coworks in Java, a concurrent object model\nfor Java. Also known as the Task pattern. Since then we have implemented many\nlarger projects all over the world. The concept is easy for developers to\nunderstand and generally performs very well.\n\n The other evening I decided to try to implement my version of Coworks in\nPython. Inspired by Donovan Preston's (@donovanpreston) talk at Pycon 2010\nabout his implementation of Task's in Python I decided to try my self.\n\n Pyworks implements two types of concurrent classes: Actor and Task. Actor\nis a simple concurrent class and Task is a specialized form of Actor. Actor\nhas a few simple methods: actor, timeout, notify and observe. Task is more\ncomplex supporting State pattern and methods for controlled startup sequence,\nconfiguration etc.\n\n It is a simple as it gets. Subclasses of Task run in their own thread.\nTask's can access each other by calling self.actor(\"SomeActor\") to get\na Proxy for that Task. You can call all methods on the other Task. The Method\nis sent on a Queue and executed in the other Task's thread.\n\n If you need a return value you can use the Future patten.\n\n Every Task can listen on other Task's via the self.observe(\"SomeActor\")\nmethod. A listener must implement all Output methods of the Task being\nlistened on.\n\n Every Task has a State (default is it self), which handle all incoming\nMethods. This means that States in Task are very easy to implement.\n\n No thought or time whatsoever has been put into performance, this is a study\nonly.\n\nrun test test program by simply doing:\n$ python pywork.py --run\n\nWorks on python3\n\nRene Nejsum\nrene@pylots.com\n\nCopyright (C) 2012-\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pylots/pyworks", "keywords": "actors concurrency development", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyworks", "package_url": "https://pypi.org/project/pyworks/", "platform": "", "project_url": "https://pypi.org/project/pyworks/", "project_urls": { "Bug Reports": "https://github.com/pylots/pyworks/issues", "Homepage": "https://github.com/pylots/pyworks", "Source": "https://github.com/pylots/pyworks/" }, "release_url": "https://pypi.org/project/pyworks/0.9.1/", "requires_dist": [ "jinja2" ], "requires_python": "", "summary": "An Task framework", "version": "0.9.1" }, "last_serial": 3949676, "releases": { "0.8.0": [ { "comment_text": "", "digests": { "md5": "51b92cba14da6a9f046fd9527adb12e2", "sha256": "9e17cef1d75dda28ccb4f15f1cbdcf333ac08852dfd2d9fc95ec901dcc23573a" }, "downloads": -1, "filename": "pyworks-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "51b92cba14da6a9f046fd9527adb12e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12391, "upload_time": "2018-03-31T13:10:04", "url": "https://files.pythonhosted.org/packages/f3/e6/44d27a9fba81e40beead3956c49b1ab8a3202055f782f40e0621faf03d73/pyworks-0.8.0-py3-none-any.whl" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "47b5f4df36fbc30835250546647b352e", "sha256": "0343368d5d679015c16333cb455e8063cbf80b74811cc84503b911d2adcddb8d" }, "downloads": -1, "filename": "pyworks-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "47b5f4df36fbc30835250546647b352e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12855, "upload_time": "2018-04-04T13:26:00", "url": "https://files.pythonhosted.org/packages/e1/a8/5b06e04c2415e52927f192cdc75fdda53176dca07c52fce5bb8b23aeef1a/pyworks-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c38d40a8dc9c17896814f97ed6e9a510", "sha256": "1fcdc995c9c983423534d901d3d78abdf35475c18e9fb84dc759fb3b27febc8d" }, "downloads": -1, "filename": "pyworks-0.9.0.tar.gz", "has_sig": false, "md5_digest": "c38d40a8dc9c17896814f97ed6e9a510", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11677, "upload_time": "2018-04-04T13:26:01", "url": "https://files.pythonhosted.org/packages/d1/42/55d1a23b62891b936665fcfb84b4798f7cc085839cc741865708300f4834/pyworks-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "e4b5bae7db455222c33eb766ae2fc344", "sha256": "988c2948068cff592a51317002c3330ec0eab04c88abe54f5767e9f504f28f3e" }, "downloads": -1, "filename": "pyworks-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e4b5bae7db455222c33eb766ae2fc344", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14129, "upload_time": "2018-06-11T10:15:39", "url": "https://files.pythonhosted.org/packages/95/93/789d6eb688ef5b2349191fc94c8bb6327e4ee5bd59a454f0fefc78023aec/pyworks-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c972c209f457dd66aa7a165f28766bfb", "sha256": "b7fb059fd200e2c848e19ade9c10f73e2f447247257f4ee3318736a533ce6eb4" }, "downloads": -1, "filename": "pyworks-0.9.1.tar.gz", "has_sig": false, "md5_digest": "c972c209f457dd66aa7a165f28766bfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12596, "upload_time": "2018-06-11T10:15:41", "url": "https://files.pythonhosted.org/packages/aa/e7/48f6e0c50795e09c8f90bb415134669e73dd44b0d1340e5f2b7d5b091c57/pyworks-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e4b5bae7db455222c33eb766ae2fc344", "sha256": "988c2948068cff592a51317002c3330ec0eab04c88abe54f5767e9f504f28f3e" }, "downloads": -1, "filename": "pyworks-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e4b5bae7db455222c33eb766ae2fc344", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14129, "upload_time": "2018-06-11T10:15:39", "url": "https://files.pythonhosted.org/packages/95/93/789d6eb688ef5b2349191fc94c8bb6327e4ee5bd59a454f0fefc78023aec/pyworks-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c972c209f457dd66aa7a165f28766bfb", "sha256": "b7fb059fd200e2c848e19ade9c10f73e2f447247257f4ee3318736a533ce6eb4" }, "downloads": -1, "filename": "pyworks-0.9.1.tar.gz", "has_sig": false, "md5_digest": "c972c209f457dd66aa7a165f28766bfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12596, "upload_time": "2018-06-11T10:15:41", "url": "https://files.pythonhosted.org/packages/aa/e7/48f6e0c50795e09c8f90bb415134669e73dd44b0d1340e5f2b7d5b091c57/pyworks-0.9.1.tar.gz" } ] }