{ "info": { "author": "Ran Aroussi", "author_email": "ran@aroussi.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "MultiTasking: Non-blocking Python methods using decorators\n==========================================================\n\n.. image:: https://img.shields.io/pypi/pyversions/multitasking.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/multitasking\n :alt: Python version\n\n.. image:: https://img.shields.io/travis/ranaroussi/multitasking/master.svg?\n :target: https://travis-ci.org/ranaroussi/multitasking\n :alt: Travis-CI build status\n\n.. image:: https://img.shields.io/pypi/v/multitasking.svg?maxAge=60\n :target: https://pypi.python.org/pypi/multitasking\n :alt: PyPi version\n\n.. image:: https://img.shields.io/pypi/status/multitasking.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/multitasking\n :alt: PyPi status\n\n.. image:: https://img.shields.io/github/stars/ranaroussi/multitasking.svg?style=social&label=Star&maxAge=60\n :target: https://github.com/ranaroussi/multitasking\n :alt: Star this repo\n\n.. image:: https://img.shields.io/twitter/follow/aroussi.svg?style=social&label=Follow%20Me&maxAge=60\n :target: https://twitter.com/aroussi\n :alt: Follow me on twitter\n\n\\\n\n**MultiTasking** is a tiny Python library lets you convert your Python methods into asynchronous,\nnon-blocking methods simply by using a decorator.\n\nExample\n--------------------\n.. code:: python\n\n # example.py\n import multitasking\n import time\n import random\n import signal\n\n # kill all tasks on ctrl-c\n signal.signal(signal.SIGINT, multitasking.killall)\n\n # or, wait for task to finish on ctrl-c:\n # signal.signal(signal.SIGINT, multitasking.wait_for_tasks)\n\n @multitasking.task # <== this is all it takes :-)\n def hello(count):\n sleep = random.randint(1,10)/2\n print(\"Hello %s (sleeping for %ss)\" % (count, sleep))\n time.sleep(sleep)\n print(\"Goodbye %s (after for %ss)\" % (count, sleep))\n\n if __name__ == \"__main__\":\n for i in range(0, 10):\n hello(i+1)\n\n\nThe output would look something like this:\n\n.. code:: bash\n\n $ python example.py\n\n Hello 1 (sleeping for 0.5s)\n Hello 2 (sleeping for 1.0s)\n Hello 3 (sleeping for 5.0s)\n Hello 4 (sleeping for 0.5s)\n Hello 5 (sleeping for 2.5s)\n Hello 6 (sleeping for 3.0s)\n Hello 7 (sleeping for 0.5s)\n Hello 8 (sleeping for 4.0s)\n Hello 9 (sleeping for 3.0s)\n Hello 10 (sleeping for 1.0s)\n Goodbye 1 (after for 0.5s)\n Goodbye 4 (after for 0.5s)\n Goodbye 7 (after for 0.5s)\n Goodbye 2 (after for 1.0s)\n Goodbye 10 (after for 1.0s)\n Goodbye 5 (after for 2.5s)\n Goodbye 6 (after for 3.0s)\n Goodbye 9 (after for 3.0s)\n Goodbye 8 (after for 4.0s)\n Goodbye 3 (after for 5.0s)\n\n\nSettings\n========\n\nThe default maximum threads is equal to the # of CPU Cores.\n**This is just a rule of thumb!** The ``Thread`` module isn't actually using more than one core at a time.\n\nYou can change the default maximum number of threads using:\n\n.. code:: python\n\n import multitasking\n multitasking.set_max_threads(10)\n\n...or, if you want to set the maximum number of threads based on the number of CPU Cores, you can:\n\n.. code:: python\n\n import multitasking\n multitasking.set_max_threads(multitasking.config[\"CPU_CORES\"] * 5)\n\nFor applications that doesn't require access to shared resources,\nyou can set ``MultiTasking`` to use ``multiprocessing.Process()``\ninstead of the ``threading.Thread()``, thus avoiding some of the\n`GIL constraints `_.\n\n.. code:: python\n\n import multitasking\n multitasking.set_engine(\"process\") # \"process\" or \"thread\"\n\n\nInstallation\n============\n\nInstall multitasking using ``pip``:\n\n.. code:: bash\n\n $ pip install multitasking --upgrade --no-cache-dir\n\n\nLegal Stuff\n===========\n\nMultiTasking is distributed under the **GNU Lesser General Public License v3.0**. See the `LICENSE.txt <./LICENSE.txt>`_ file in the release for details.\nMultiTasking is not a product of Interactive Brokers, nor is it affiliated with Interactive Brokers.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ranaroussi/multitasking", "keywords": "multitasking multitask threading async", "license": "Apache", "maintainer": "", "maintainer_email": "", "name": "multitasking", "package_url": "https://pypi.org/project/multitasking/", "platform": "any", "project_url": "https://pypi.org/project/multitasking/", "project_urls": { "Homepage": "https://github.com/ranaroussi/multitasking" }, "release_url": "https://pypi.org/project/multitasking/0.0.9/", "requires_dist": null, "requires_python": "", "summary": "Non-blocking Python methods using decorators", "version": "0.0.9" }, "last_serial": 5312682, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6008742767e6ff6855f817a8afbcf145", "sha256": "7c084bd009050453c624d9dab8a03fc744b91a58d0e03ed9d79ca75f1a7ee465" }, "downloads": -1, "filename": "multitasking-0.0.1.tar.gz", "has_sig": false, "md5_digest": "6008742767e6ff6855f817a8afbcf145", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5513, "upload_time": "2016-12-21T19:21:16", "url": "https://files.pythonhosted.org/packages/ac/77/0d788812253204f7fd914ee5b7b8e0a8da6267a47cbd5e4381b3a87133ef/multitasking-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "60fda86b42fa20629410469469024fe4", "sha256": "cd003884808db6293d547aa4fbc08e03ef3d903dba847d8a3b8e4abc67772a12" }, "downloads": -1, "filename": "multitasking-0.0.2.tar.gz", "has_sig": false, "md5_digest": "60fda86b42fa20629410469469024fe4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6800, "upload_time": "2016-12-30T13:05:40", "url": "https://files.pythonhosted.org/packages/c4/6f/b1eca3240dce03425843045fe2609248a7a27e1707de32f66bb0aed6661b/multitasking-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "fe1a7f06683ca449c212a2596f7df4f1", "sha256": "4ea363e455843f9406c2507bae99797eb653a27bdf840e707bdd768689985400" }, "downloads": -1, "filename": "multitasking-0.0.3.tar.gz", "has_sig": false, "md5_digest": "fe1a7f06683ca449c212a2596f7df4f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7134, "upload_time": "2016-12-31T12:13:39", "url": "https://files.pythonhosted.org/packages/8e/39/c58f55cb9cb0eeade3a735d2bd20a881b010302e907a639fb92a21932caa/multitasking-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8cab5de5cf9d28048f39b8bb5aeb3838", "sha256": "c520f28fc683ec4f11cbb0fff1d94cad3c75a7422107909ae7318a6be3ba6f07" }, "downloads": -1, "filename": "multitasking-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8cab5de5cf9d28048f39b8bb5aeb3838", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7154, "upload_time": "2017-06-12T04:58:37", "url": "https://files.pythonhosted.org/packages/f1/6a/af9b61bf8ddf1105468636224309e44c5fabd74d53f0adf162a54e8a9ffa/multitasking-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "407f944655b75fec0fba85ef10c1330f", "sha256": "95155d5797d363741e0eb47fca97c3ea27504f92c0176a2177d7b27ef510bd78" }, "downloads": -1, "filename": "multitasking-0.0.5.tar.gz", "has_sig": false, "md5_digest": "407f944655b75fec0fba85ef10c1330f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7197, "upload_time": "2017-11-09T16:43:57", "url": "https://files.pythonhosted.org/packages/95/39/fdf62817303e7ea5940bd50d721c0e8b51a6f6662ed3c0e3f81a9993dc6d/multitasking-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "70f8c07192eab82869aefe12c4a068ab", "sha256": "78fe6b0765cee000cdbf80b20378274da71c83ba3951a1c08e68e67f9ce88752" }, "downloads": -1, "filename": "multitasking-0.0.6.tar.gz", "has_sig": false, "md5_digest": "70f8c07192eab82869aefe12c4a068ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6906, "upload_time": "2018-02-25T17:24:36", "url": "https://files.pythonhosted.org/packages/65/d5/741be193d8fd300ea87abc4056b9b86aa17ce2d9e6d954ee2bca73f8bad0/multitasking-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "1eba40ad0c503a2d6458bcb5ccc275bb", "sha256": "ceef98618b59ec0098eb158c9ddb9c32957c79fbd2c62e4f93be6a60ae60d75a" }, "downloads": -1, "filename": "multitasking-0.0.7.tar.gz", "has_sig": false, "md5_digest": "1eba40ad0c503a2d6458bcb5ccc275bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6919, "upload_time": "2018-02-26T21:05:22", "url": "https://files.pythonhosted.org/packages/ac/1a/0750416c5e3683d170757e423f097fdf78ceb9ccdc65658b24341664e53e/multitasking-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "2d4400edc98b20eae3f7b201a6fbf180", "sha256": "93ef20047f1cfb5c6184fe07f7eefcb74289bc16306a2833dcdafbcbf5063531" }, "downloads": -1, "filename": "multitasking-0.0.8.tar.gz", "has_sig": false, "md5_digest": "2d4400edc98b20eae3f7b201a6fbf180", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6870, "upload_time": "2019-05-07T19:32:15", "url": "https://files.pythonhosted.org/packages/44/34/e334d7307b91527cb7918fa9290308a48915316169c401a152d28bb6a843/multitasking-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "bc78aea2b9772cc3c346a2bb70736be6", "sha256": "b59d99f709d2e17d60ccaa2be09771b6e9ed9391c63f083c0701e724f624d2e0" }, "downloads": -1, "filename": "multitasking-0.0.9.tar.gz", "has_sig": false, "md5_digest": "bc78aea2b9772cc3c346a2bb70736be6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8094, "upload_time": "2019-05-24T12:57:49", "url": "https://files.pythonhosted.org/packages/69/e7/e9f1661c28f7b87abfa08cb0e8f51dad2240a9f4f741f02ea839835e6d18/multitasking-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc78aea2b9772cc3c346a2bb70736be6", "sha256": "b59d99f709d2e17d60ccaa2be09771b6e9ed9391c63f083c0701e724f624d2e0" }, "downloads": -1, "filename": "multitasking-0.0.9.tar.gz", "has_sig": false, "md5_digest": "bc78aea2b9772cc3c346a2bb70736be6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8094, "upload_time": "2019-05-24T12:57:49", "url": "https://files.pythonhosted.org/packages/69/e7/e9f1661c28f7b87abfa08cb0e8f51dad2240a9f4f741f02ea839835e6d18/multitasking-0.0.9.tar.gz" } ] }