{ "info": { "author": "Artem Lutov", "author_email": "artem@exascale.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: Plugins", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: Android", "Operating System :: MacOS", "Operating System :: Microsoft", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 2", "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", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Scientific/Engineering", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Testing", "Topic :: System :: Benchmark", "Topic :: System :: Monitoring" ], "description": "PyExPool is a concurrent execution pool with custom resource constraints (memory, timeouts, affinity, CPU cores and caching) and load balancing of the external applications on NUMA architecture. All main functionality is implemented as a single-file module to be easily included into your project and customized as a part of your distribution (like in [PyCaBeM](https://github.com/eXascaleInfolab/PyCABeM) to execute multiple apps in parallel on the dedicated CPU cores and avoiding their swapping from the main memory), also it can be installed as a library. An optional minimalistic Web interface is provided in the separate module to inspect the load balancer and execution pool. Typically, PyExPool is used as an application framework for benchmarking, load testing or other heavy-loaded multi-process execution activities on constrained computational resources. PyExPool is convenient for the fine-grained resource control (including apps execution on the specific number of the optionally dedicated logical CPUs) and for the failover execution.\n> [hwloc / lstopo](http://www.admin-magazine.com/HPC/Articles/hwloc-Which-Processor-Is-Running-Your-Service) should be additionally installed if customized CPU affinity masking and cache control are required, see [Requirements](#requirements) section.\n\nSee details on the [PyExPool page](https://github.com/eXascaleInfolab/PyExPool) and star the project if you like it! For any further assistance you can drop me a email or write [me on Linkedin](https://linkedin.com/in/artemvl).\n\nBibTeX:\n```bibtex\n@misc{pyexpool,\n\tauthor = {Artem Lutov and Philippe Cudr\u00e9-Mauroux},\n\ttitle = {PyExPool-v.3: A Lightweight Execution Pool with Constraint-aware Load-Balancer.},\n\tyear = {2018},\n\turl = {https://github.com/eXascaleInfolab/PyExPool}\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/eXascaleInfolab/PyExPool", "keywords": "execution-pool load-balancer task-queue multi-process benchmarking-framework execution-constraints NUMA concurrent parallel-computing cache-control monitoring-server", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyexpool", "package_url": "https://pypi.org/project/pyexpool/", "platform": "", "project_url": "https://pypi.org/project/pyexpool/", "project_urls": { "Bug Reports & Proposals": "https://github.com/eXascaleInfolab/PyExPool/issues", "Homepage": "https://github.com/eXascaleInfolab/PyExPool", "Source": "https://github.com/eXascaleInfolab/PyExPool", "Visit our eXascale Infolab": "https://exascale.info/" }, "release_url": "https://pypi.org/project/pyexpool/3.2.1/", "requires_dist": [ "psutil (>=5)", "bottle", "future; python_version < \"3\"", "enum34 (>=1); python_version < \"3.4\"", "mock (>=2); (python_version < \"3\") and extra == 'test'" ], "requires_python": "", "summary": "A lightweight multi-process Execution Pool with load balancing and customizable resource consumption constraints.", "version": "3.2.1" }, "last_serial": 4224764, "releases": { "3.0.0": [ { "comment_text": "", "digests": { "md5": "ad6017ca46dda4a600ed30fc7a64c63e", "sha256": "a202cdb4b54f5c72edea3c4c0b94ac3b3e0119bea61a0423eba5020760fcd567" }, "downloads": -1, "filename": "pyexpool-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad6017ca46dda4a600ed30fc7a64c63e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45765, "upload_time": "2018-05-22T20:17:47", "url": "https://files.pythonhosted.org/packages/c1/6c/7a8888b6ccde7314342abbdb3bb86b8f44c6b94ca97fce6eb9dac1b63f62/pyexpool-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d868b0f7ca0de1310e03511cca57067f", "sha256": "25484a05cc125d14783f7a9e487d2ae18f703ae571d57b64e8b19fe57d6cebbf" }, "downloads": -1, "filename": "pyexpool-3.0.0.zip", "has_sig": false, "md5_digest": "d868b0f7ca0de1310e03511cca57067f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63810, "upload_time": "2018-05-23T00:04:46", "url": "https://files.pythonhosted.org/packages/fe/7e/d50a1b07efe9238807d07a4a8d15a3a0f276803dc8eb70b231fab57f0b90/pyexpool-3.0.0.zip" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "b3f50594003d29596afb93d4b1e36523", "sha256": "c10ed311ca6e0c981b168c5e03af52f96b7d164beef5258e9599133166bdbaed" }, "downloads": -1, "filename": "pyexpool-3.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3f50594003d29596afb93d4b1e36523", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 47711, "upload_time": "2018-05-26T01:47:39", "url": "https://files.pythonhosted.org/packages/84/f9/8e030cff84b0219e3da3f595394674a99a299d9e92105165938d28df1ad6/pyexpool-3.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7f63b9e415de4960d02057e15c907c3", "sha256": "e5436ad8845c861cfbe03cdaf5dc18789b96e0f06df5c40b6885c07a06d3aa1b" }, "downloads": -1, "filename": "pyexpool-3.0.1.tar.gz", "has_sig": false, "md5_digest": "a7f63b9e415de4960d02057e15c907c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58912, "upload_time": "2018-05-26T01:47:41", "url": "https://files.pythonhosted.org/packages/c5/b8/3778827e1fd82d7fc40b0dde8d0422f58617e08d8608e2c5a92eb3aaeaa1/pyexpool-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "4d1480639706833ab8c4dc78614bfb5a", "sha256": "ebd6b54d2cbc64402566102c00d3f9ae37f3cc9164ea31ba6f9f98d60fb4cbe7" }, "downloads": -1, "filename": "pyexpool-3.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d1480639706833ab8c4dc78614bfb5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48832, "upload_time": "2018-06-01T22:56:25", "url": "https://files.pythonhosted.org/packages/2d/ee/a0ffa1158056dac208a3e4560380866189e1e415342ed70d3c2542506328/pyexpool-3.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ffc5b910e5632478ce3b0ed6c9c05b1e", "sha256": "535825694c14c8989f36b948edf62b23098dc68ff74c66748cfb01758dd1c4ab" }, "downloads": -1, "filename": "pyexpool-3.0.2.tar.gz", "has_sig": false, "md5_digest": "ffc5b910e5632478ce3b0ed6c9c05b1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60104, "upload_time": "2018-06-01T22:56:27", "url": "https://files.pythonhosted.org/packages/dc/14/ce6e5fbc357a6b30d9f31d36d31f876e9fb9a75e79f9e9b3fbaa643ebfd9/pyexpool-3.0.2.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "c28c012feaafe3cc9b05ad7150f557da", "sha256": "a829773d8a3a0fe608ca3f9f696d19cb8fabccf7054a6b095f6d0030b49894b0" }, "downloads": -1, "filename": "pyexpool-3.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c28c012feaafe3cc9b05ad7150f557da", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 50037, "upload_time": "2018-06-21T19:20:53", "url": "https://files.pythonhosted.org/packages/f2/33/f117f3ef61c0f8a71f3e929c68d97ab9cf3b801cbcc9f0e0b5c6f47014ad/pyexpool-3.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd91879c39ebc12c23e8f2b805a8b619", "sha256": "09ed48650e56970680c5b4c1c45b6408eaf4c27e6ef8ac3f96b832131a67cc99" }, "downloads": -1, "filename": "pyexpool-3.1.0.tar.gz", "has_sig": false, "md5_digest": "cd91879c39ebc12c23e8f2b805a8b619", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61427, "upload_time": "2018-06-21T19:20:55", "url": "https://files.pythonhosted.org/packages/3e/24/b41b7a2497049853e4184b2ee8e7bd8d427297d103c7142f596151de7b4d/pyexpool-3.1.0.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "18f361a0e9ecc6c000a54bd6ef0eabd4", "sha256": "f4be7372005162c7b915284e170f7a0de097f194499751a7df25457c41982c34" }, "downloads": -1, "filename": "pyexpool-3.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18f361a0e9ecc6c000a54bd6ef0eabd4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 51053, "upload_time": "2018-07-08T21:51:09", "url": "https://files.pythonhosted.org/packages/d3/86/5b1ff8dae444c61d0a7c77e4fe8dc1d5a11678a2ffca5fef5937277f439c/pyexpool-3.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8cfa3ad5715f29437cad3476f280e671", "sha256": "0fe02837aa44ec6c4c0221e67603c94575ef7d294283b7870c0519d92ecd34f6" }, "downloads": -1, "filename": "pyexpool-3.1.1.tar.gz", "has_sig": false, "md5_digest": "8cfa3ad5715f29437cad3476f280e671", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62453, "upload_time": "2018-07-08T21:51:13", "url": "https://files.pythonhosted.org/packages/53/d5/fc49cdee4295c3fa880957ea5b290df55f4dbd3f964591d00b0e009ca452/pyexpool-3.1.1.tar.gz" } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "5302817edccbcd7bd22af29943745ddc", "sha256": "bc5e4ca4843e512dfc8373a4185f23e8fa1fde94f2e5cded881183be3a465e75" }, "downloads": -1, "filename": "pyexpool-3.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5302817edccbcd7bd22af29943745ddc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 52958, "upload_time": "2018-08-31T01:33:37", "url": "https://files.pythonhosted.org/packages/22/e7/9a39adb25285225b2a54c394bdb13d780f80ccfa651c9682a9246e89f024/pyexpool-3.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b88679c3c85dfa6d68237088fba534b", "sha256": "177bc8eb201e7ddde2da9d6fc68444f51f49eaab2662821f44a4bc4c7337d2dc" }, "downloads": -1, "filename": "pyexpool-3.2.1.tar.gz", "has_sig": false, "md5_digest": "0b88679c3c85dfa6d68237088fba534b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64684, "upload_time": "2018-08-31T01:33:41", "url": "https://files.pythonhosted.org/packages/59/86/930354456c43b1bd851a4bfe5374ee3c25f4760a6878cf361cf338dbe36a/pyexpool-3.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5302817edccbcd7bd22af29943745ddc", "sha256": "bc5e4ca4843e512dfc8373a4185f23e8fa1fde94f2e5cded881183be3a465e75" }, "downloads": -1, "filename": "pyexpool-3.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5302817edccbcd7bd22af29943745ddc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 52958, "upload_time": "2018-08-31T01:33:37", "url": "https://files.pythonhosted.org/packages/22/e7/9a39adb25285225b2a54c394bdb13d780f80ccfa651c9682a9246e89f024/pyexpool-3.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b88679c3c85dfa6d68237088fba534b", "sha256": "177bc8eb201e7ddde2da9d6fc68444f51f49eaab2662821f44a4bc4c7337d2dc" }, "downloads": -1, "filename": "pyexpool-3.2.1.tar.gz", "has_sig": false, "md5_digest": "0b88679c3c85dfa6d68237088fba534b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64684, "upload_time": "2018-08-31T01:33:41", "url": "https://files.pythonhosted.org/packages/59/86/930354456c43b1bd851a4bfe5374ee3c25f4760a6878cf361cf338dbe36a/pyexpool-3.2.1.tar.gz" } ] }