{ "info": { "author": "desbma", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Python Software Foundation License", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "pyfastcopy\n==========\n\n|Latest version| |Tests status| |Coverage| |Supported Python versions|\n\npyfastcopy is a simple Python module that monkey patches the\n``shutil.copyfile`` function of Python standard library to internally\nuse the sendfile system call.\n\nIt can provide important performance improvements for large file copy\n(typically 30-40%). See `the performance section <#performance>`__ for\nsome numbers.\n\nBecause ``shutil.copyfile`` is used by other fonctions in the ``shutil``\nmodule, the following functions also automatically benefit from the\nperformance boost:\n\n- ``shutil.copy``\n- ``shutil.copy2``\n- ``shutil.copytree``\n\nIf ``sendfile`` is not available on your system or fails, the classic,\nslower chunk file copy is used, so there is no downside to using this\nmodule.\n\nFor more information, see `my proposed\npatch `__ for Python.\n\nPerformance\n-----------\n\nTests were done copying files (source and destination) on a\n`tmpfs `__ filesystem, so that no\nslowdown related to hard drive or SSD storage occurs. Test files were\ngenerated with pseudo random data using\n`frandom `__.\n\nSee\n`benchmark.py `__\nfor details about the test procedure and how the following graphs were\ngenerated.\n\nPython 3.4: |graph1| |graph2| |graph3|\n\nPython 3.6: |graph4| |graph5| |graph6|\n\n**These tests show a 30-50% performance improvement of\n``shutil.copyfile`` compared to stock Python.**\n\nUsage\n-----\n\nJust import the module:\n\n::\n\n import pyfastcopy\n\nAnd then use the patched ``shutil.copyfile`` as usual:\n\n::\n\n shutil.copyfile(src, dst)\n\n**The ``sendfile`` system call does not exist on Windows, so importing\nthis module will have no effect.**\n\nInstallation\n------------\n\nFrom PyPI (with PIP)\n~~~~~~~~~~~~~~~~~~~~\n\n1. If you don't already have it, `install\n pip `__ for Python 3 (not\n needed if you are using Python >= 3.4)\n2. Install pyfastcopy: ``pip3 install pyfastcopy``\n3. Enjoy fast copy when using ``shutil.copyfile``, ``shutil.copy``,\n ``shutil.copy2`` or ``shutil.copytree``\n\nFrom source\n~~~~~~~~~~~\n\n1. If you don't already have it, `install\n setuptools `__\n for Python 3\n2. Clone this repository:\n ``git clone https://github.com/desbma/pyfastcopy``\n3. Install pyfastcopy: ``python3 setup.py install``\n4. Enjoy fast copy when using ``shutil.copyfile``, ``shutil.copy``,\n ``shutil.copy2`` or ``shutil.copytree``\n\nLicense\n-------\n\nPython Software Foundation License\n\n.. |Latest version| image:: https://img.shields.io/pypi/v/pyfastcopy.svg?style=flat\n :target: https://pypi.python.org/pypi/pyfastcopy/\n.. |Tests status| image:: https://img.shields.io/travis/desbma/pyfastcopy/master.svg?label=tests&style=flat\n :target: https://travis-ci.org/desbma/pyfastcopy\n.. |Coverage| image:: https://img.shields.io/coveralls/desbma/pyfastcopy/master.svg?style=flat\n :target: https://coveralls.io/github/desbma/pyfastcopy?branch=master\n.. |Supported Python versions| image:: https://img.shields.io/pypi/pyversions/pyfastcopy.svg?style=flat\n :target: https://pypi.python.org/pypi/pyfastcopy/\n.. |graph1| image:: https://i.imgur.com/fbKbKgmt.png\n :target: https://i.imgur.com/fbKbKgm.png\n.. |graph2| image:: https://i.imgur.com/Cnrwi2Yt.png\n :target: https://i.imgur.com/Cnrwi2Y.png\n.. |graph3| image:: https://i.imgur.com/B3GDWFrt.png\n :target: https://i.imgur.com/B3GDWFr.png\n.. |graph4| image:: https://i.imgur.com/5lnETSCt.png\n :target: https://i.imgur.com/5lnETSC.png\n.. |graph5| image:: https://i.imgur.com/YsBWYsxt.png\n :target: https://i.imgur.com/YsBWYsx.png\n.. |graph6| image:: https://i.imgur.com/k32LSbCt.png\n :target: https://i.imgur.com/k32LSbC.png", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/desbma/pyfastcopy/archive/1.0.3.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/desbma/pyfastcopy", "keywords": "shutil,copy,copyfile,file,performance,speed,sendfile", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyfastcopy", "package_url": "https://pypi.org/project/pyfastcopy/", "platform": "", "project_url": "https://pypi.org/project/pyfastcopy/", "project_urls": { "Download": "https://github.com/desbma/pyfastcopy/archive/1.0.3.tar.gz", "Homepage": "https://github.com/desbma/pyfastcopy" }, "release_url": "https://pypi.org/project/pyfastcopy/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "Speed up shutil.copyfile by using sendfile system call", "version": "1.0.3" }, "last_serial": 3881527, "releases": { "1.0.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f1c42edf12f93f5f2da09bbe73ef8914", "sha256": "415fb8253331acff23989bfb289b1804ecf6e23a5168eafd2a4b28d20b69ceab" }, "downloads": -1, "filename": "pyfastcopy-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f1c42edf12f93f5f2da09bbe73ef8914", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4420, "upload_time": "2016-02-07T22:54:02", "url": "https://files.pythonhosted.org/packages/36/f9/c5dfa74d077fc483671a7150792977682805580d8f9d21569aad8cc849a8/pyfastcopy-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "a207961e32ec81f691cab0ec13cd7b49", "sha256": "602996907f6366c1003799b38300dba76a57043b983abe3bf4301a19f89b5e75" }, "downloads": -1, "filename": "pyfastcopy-1.0.2.tar.gz", "has_sig": false, "md5_digest": "a207961e32ec81f691cab0ec13cd7b49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4945, "upload_time": "2016-02-09T23:17:05", "url": "https://files.pythonhosted.org/packages/00/38/65865c557f17a80d8393740db7367324d1f54d22e0f03a9c7476dbb7d767/pyfastcopy-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "21a4a7fc94f94015c0bec1e3c7898954", "sha256": "ed4620f1087a8949888973e315d3d59fbe9b8cc4ca5df553d76d2f21d2748999" }, "downloads": -1, "filename": "pyfastcopy-1.0.3.tar.gz", "has_sig": false, "md5_digest": "21a4a7fc94f94015c0bec1e3c7898954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4383, "upload_time": "2018-05-20T20:58:32", "url": "https://files.pythonhosted.org/packages/43/80/535d6b3de415e26d0a1cb774c6895dd07aa5986d2f8bde200393bd916790/pyfastcopy-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "21a4a7fc94f94015c0bec1e3c7898954", "sha256": "ed4620f1087a8949888973e315d3d59fbe9b8cc4ca5df553d76d2f21d2748999" }, "downloads": -1, "filename": "pyfastcopy-1.0.3.tar.gz", "has_sig": false, "md5_digest": "21a4a7fc94f94015c0bec1e3c7898954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4383, "upload_time": "2018-05-20T20:58:32", "url": "https://files.pythonhosted.org/packages/43/80/535d6b3de415e26d0a1cb774c6895dd07aa5986d2f8bde200393bd916790/pyfastcopy-1.0.3.tar.gz" } ] }