{ "info": { "author": "Weitang Li", "author_email": "liwt31@163.com", "bugtrack_url": null, "classifiers": [], "description": "# Remember Me\n[![Build Status](https://travis-ci.org/liwt31/remember-me.svg?branch=master)](https://travis-ci.org/liwt31/remember-me)\n\nRememberMe is a handy tool for memory problems in Python. It computes the total memory usage of\nPython objects.\n\n## RememberMe is a replacement for `sys.getsizeof`\n`sys.getsizeof` is almost confusing in Python:\n```python\nimport sys\na = [1, 2, 3]\nb = [a, a, a]\nprint(sys.getsizeof(a) == sys.getsizeof(b)) # Can you believe the result is `True`?\n```\nWhile `rememberme` gives you a clear idea how large an object is.\n```python\nfrom rememberme import memory\na = [1, 2, 3]\nb = [a, a, a]\nprint(memory(a)) # 172 bytes!\nprint(memory(b)) # 260 bytes!\n```\n\n## Installation\n```bash\npip install rememberme\n```\n\n## More features\nCheck out memory usage in the current frame:\n```python\nfrom rememberme import memory\ndef foo():\n a = [1, 2, 3]\n b = [a, a, a]\n print memory()\nfoo() # 260 bytes. Note `a` is included in `b`.\n```\nCheck out top memory consumers:\n```python\nfrom rememberme import top\ndef foo():\n a = [1, 2, 3]\n b = [a, a, a]\n mem_top = top() # with no args, check current frame\n print(mem_top[0]) # `b` and its memory usage\n print(mem_top[1]) # `a` and its memory usage\n```\nEven pretty print the result!\n```python\nfrom rememberme import mem_print\ndef foo():\n a = [1, 2, 3]\n b = [a, a, a]\n mem_print(b)\nfoo()\n```\nOutput:\n```\n \u2001 \u250cint (28.0B)\n \u250clist (172.0B)\u253cint (28.0B)\n \u2502 \u2514int (28.0B)\n \u2502 \u250cint (28.0B)\nlist (260.0B)\u253clist (172.0B)\u253cint (28.0B)\n \u2502 \u2514int (28.0B)\n \u2502 \u250cint (28.0B)\n \u2514list (172.0B)\u253cint (28.0B)\n \u2001 \u2514int (28.0B)\n```\n\n## Known issues and limitations\n* For better performance (and making better sense), the global dict, as well as modules, \nare not included in the memory usage of any objects.\n* We essentially relies on [`tp_traverse`](https://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_traverse) \nto traverse the object graph. For C extensions, memory usage might be underestimated under\nvarious circumstances. For the most common `numpy.ndarray`, a specific procedure is defined to\nprobe the memory usage correctly, but no correctness is guaranteed for other C extensions,\nwhich may have undetectable momery leaks within themselves.", "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/liwt31/remember-me", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rememberme", "package_url": "https://pypi.org/project/rememberme/", "platform": "", "project_url": "https://pypi.org/project/rememberme/", "project_urls": { "Homepage": "https://github.com/liwt31/remember-me" }, "release_url": "https://pypi.org/project/rememberme/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Rememberme is a handy tool for memory problems in Python.", "version": "0.1.1" }, "last_serial": 4903769, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "331309039457148201ff7a431a94a72e", "sha256": "4d93c6acbbc0977286081198c4bfd9af3b2dbdc6b3ac8c938f2a0ab6c08b8bf9" }, "downloads": -1, "filename": "rememberme-0.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "331309039457148201ff7a431a94a72e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4842, "upload_time": "2019-03-01T02:30:43", "url": "https://files.pythonhosted.org/packages/b3/5a/0ec49ff2f4792cc9a8fea095538690689495845fca2a55f2ac1fd17d8f93/rememberme-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71b1b0d48cd8b7d8aef03976a65d82cb", "sha256": "1ae4d7b9909357eb601e2ff6b1ac5bbd94cbddbf8befd34342a163bdded98039" }, "downloads": -1, "filename": "rememberme-0.1.0.tar.gz", "has_sig": true, "md5_digest": "71b1b0d48cd8b7d8aef03976a65d82cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5796, "upload_time": "2019-03-01T02:30:46", "url": "https://files.pythonhosted.org/packages/ab/26/80507ba2ccfc3d6c63f2d011184c51288d1e9e5d57b018321245e7bfd8b0/rememberme-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "20426ee50ba7f5de4167115bc9fdb974", "sha256": "834538f848351e1d2d4ef8fe413c03a6222f8afbbdbaa1602a7c5b1f5de0b924" }, "downloads": -1, "filename": "rememberme-0.1.1.tar.gz", "has_sig": true, "md5_digest": "20426ee50ba7f5de4167115bc9fdb974", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66891, "upload_time": "2019-03-06T06:43:22", "url": "https://files.pythonhosted.org/packages/9b/09/fd6c9869a81a4285b92d0d441d6f1acb56bd10f93165e9e9fb370a4053d6/rememberme-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "20426ee50ba7f5de4167115bc9fdb974", "sha256": "834538f848351e1d2d4ef8fe413c03a6222f8afbbdbaa1602a7c5b1f5de0b924" }, "downloads": -1, "filename": "rememberme-0.1.1.tar.gz", "has_sig": true, "md5_digest": "20426ee50ba7f5de4167115bc9fdb974", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66891, "upload_time": "2019-03-06T06:43:22", "url": "https://files.pythonhosted.org/packages/9b/09/fd6c9869a81a4285b92d0d441d6f1acb56bd10f93165e9e9fb370a4053d6/rememberme-0.1.1.tar.gz" } ] }