# win-precise-time
[![PyPI - Version](https://img.shields.io/pypi/v/win-precise-time.svg)](https://pypi.org/project/win-precise-time)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/win-precise-time.svg)](https://pypi.org/project/win-precise-time)
[![Documentation Status](https://readthedocs.org/projects/win-precise-time/badge/?version=latest)](https://win-precise-time.readthedocs.io/en/latest/?badge=latest)
The documentation is available [here](https://win-precise-time.readthedocs.io/en/latest/).
-----
**Table of Contents**
- [Description](#description)
- [Installation](#installation)
- [Usage](#usage)
- [Test](#test)
- [Build](#build)
- [License](#license)
## Description
On Windows the builtin `time.time()` provides a timestamp with ~15ms resolution.
This package provides the function `win_precise_time.time()` to retrieve an accurate timestamp by using
[GetSystemTimePreciseAsFileTime](https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime).
The function is implemented as a C extension so the performance is equal to the builtin `time.perf_counter()`
(both functions rely on [QueryPerformanceCounter](https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter)).
The function `win_precise_time.sleep()` reimplements the more precise `time.sleep()` version of CPython >= 3.11 for older python versions.
This enables sub-millisecond sleep precision without increasing the Windows timer resolution via [timeBeginPeriod](https://docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod).
## Installation
```console
pip install win-precise-time
```
## Usage
```python-repl
>>> import win_precise_time as wpt
>>> wpt.time() # retrieve current time
1654539449.4548845
>>> wpt.sleep(0.001) # sleep for 1ms
```
## Test
```console
pip install tox
tox
```
## Build
```console
pip install build
python -m build .
```
## License
`win-precise-time` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
Raw data
{
"_id": null,
"home_page": "",
"name": "win-precise-time",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "Windows,time,sleep,GetSystemTimePreciseAsFileTime,SetWaitableTimerEx,CREATE_WAITABLE_TIMER_HIGH_RESOLUTION",
"author": "",
"author_email": "Artur Drogunow <artur.drogunow@zf.com>",
"download_url": "https://files.pythonhosted.org/packages/9e/b0/21547e16a47206ccdd15769bf65e143ade1ffae67f0881c855f76e44e9fa/win-precise-time-1.4.2.tar.gz",
"platform": null,
"description": "# win-precise-time\r\n\r\n[![PyPI - Version](https://img.shields.io/pypi/v/win-precise-time.svg)](https://pypi.org/project/win-precise-time)\r\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/win-precise-time.svg)](https://pypi.org/project/win-precise-time)\r\n[![Documentation Status](https://readthedocs.org/projects/win-precise-time/badge/?version=latest)](https://win-precise-time.readthedocs.io/en/latest/?badge=latest)\r\n\r\nThe documentation is available [here](https://win-precise-time.readthedocs.io/en/latest/).\r\n\r\n-----\r\n\r\n**Table of Contents**\r\n\r\n- [Description](#description)\r\n- [Installation](#installation)\r\n- [Usage](#usage)\r\n- [Test](#test)\r\n- [Build](#build)\r\n- [License](#license)\r\n\r\n## Description\r\n\r\nOn Windows the builtin `time.time()` provides a timestamp with ~15ms resolution. \r\nThis package provides the function `win_precise_time.time()` to retrieve an accurate timestamp by using\r\n[GetSystemTimePreciseAsFileTime](https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime).\r\nThe function is implemented as a C extension so the performance is equal to the builtin `time.perf_counter()` \r\n(both functions rely on [QueryPerformanceCounter](https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter)).\r\n\r\nThe function `win_precise_time.sleep()` reimplements the more precise `time.sleep()` version of CPython >= 3.11 for older python versions. \r\nThis enables sub-millisecond sleep precision without increasing the Windows timer resolution via [timeBeginPeriod](https://docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod).\r\n\r\n## Installation\r\n\r\n```console\r\npip install win-precise-time\r\n```\r\n\r\n## Usage\r\n\r\n```python-repl\r\n>>> import win_precise_time as wpt\r\n>>> wpt.time() # retrieve current time\r\n1654539449.4548845\r\n>>> wpt.sleep(0.001) # sleep for 1ms\r\n```\r\n\r\n## Test\r\n\r\n```console\r\npip install tox\r\ntox\r\n```\r\n\r\n## Build\r\n\r\n```console\r\npip install build\r\npython -m build .\r\n```\r\n\r\n## License\r\n\r\n`win-precise-time` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "",
"version": "1.4.2",
"project_urls": {
"Documentation": "https://win-precise-time.readthedocs.io/en/latest/",
"Homepage": "https://github.com/zariiii9003/win-precise-time",
"Issues": "https://github.com/zariiii9003/win-precise-time/issues",
"Source": "https://github.com/zariiii9003/win-precise-time"
},
"split_keywords": [
"windows",
"time",
"sleep",
"getsystemtimepreciseasfiletime",
"setwaitabletimerex",
"create_waitable_timer_high_resolution"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f78bba6bdef9284fd75f816205bf9a198a2cf7b22459ff401174143ade5afe08",
"md5": "f681cdeb32a5d665b11634da809467f4",
"sha256": "7fa13a2247c2ef41cd5e9b930f40716eacc7fc1f079ea72853bd5613fe087a1a"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "f681cdeb32a5d665b11634da809467f4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 14700,
"upload_time": "2023-10-08T17:08:03",
"upload_time_iso_8601": "2023-10-08T17:08:03.987935Z",
"url": "https://files.pythonhosted.org/packages/f7/8b/ba6bdef9284fd75f816205bf9a198a2cf7b22459ff401174143ade5afe08/win_precise_time-1.4.2-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "257f5087d16a720b6833cb631b4b6f912b0ff433377227ecbbc494453951cbb5",
"md5": "3c304714899d82a089d1da38d72564f4",
"sha256": "bb8e44b0fc35fde268e8a781cdcd9f47d47abcd8089465d2d1d1063976411c8e"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "3c304714899d82a089d1da38d72564f4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 14913,
"upload_time": "2023-10-08T17:08:05",
"upload_time_iso_8601": "2023-10-08T17:08:05.519674Z",
"url": "https://files.pythonhosted.org/packages/25/7f/5087d16a720b6833cb631b4b6f912b0ff433377227ecbbc494453951cbb5/win_precise_time-1.4.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bbd6a48717649fea2d7a6679db86dae9ae4b12078c7a48aa89a8f14a360f29d0",
"md5": "f025f6753733e6a8778083cad1403c9f",
"sha256": "59272655ad6f36910d0b585969402386fa627fca3be24acc9a21be1d550e5db8"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "f025f6753733e6a8778083cad1403c9f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 14703,
"upload_time": "2023-10-08T17:08:06",
"upload_time_iso_8601": "2023-10-08T17:08:06.945265Z",
"url": "https://files.pythonhosted.org/packages/bb/d6/a48717649fea2d7a6679db86dae9ae4b12078c7a48aa89a8f14a360f29d0/win_precise_time-1.4.2-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f99c46d69220d468c82ca2044284c5a8089705c5eb66be416abcbba156365a14",
"md5": "440ad8087e2648baa055aedff6d96b70",
"sha256": "0897bb055f19f3b4336e2ba6bee0115ac20fd7ec615a6d736632e2df77f8851a"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "440ad8087e2648baa055aedff6d96b70",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 14912,
"upload_time": "2023-10-08T17:08:07",
"upload_time_iso_8601": "2023-10-08T17:08:07.896830Z",
"url": "https://files.pythonhosted.org/packages/f9/9c/46d69220d468c82ca2044284c5a8089705c5eb66be416abcbba156365a14/win_precise_time-1.4.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e9655a14b5c0e90439951f4a72672223bba81a5f882033c5850f8a6c7f4308b",
"md5": "58deac667990997a33cab96d203eb1a0",
"sha256": "0210dcea88a520c91de1708ae4c881e3c0ddc956daa08b9eabf2b7c35f3109f5"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "58deac667990997a33cab96d203eb1a0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 14694,
"upload_time": "2023-10-08T17:08:09",
"upload_time_iso_8601": "2023-10-08T17:08:09.275276Z",
"url": "https://files.pythonhosted.org/packages/2e/96/55a14b5c0e90439951f4a72672223bba81a5f882033c5850f8a6c7f4308b/win_precise_time-1.4.2-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "17197ea9a22a69fc23d5ca02e8edf65e4a335a210497794af1af0ef8fda91fa0",
"md5": "04731dcf7811199485c2f3ebc4828c35",
"sha256": "85670f77cc8accd8f1e6d05073999f77561c23012a9ee988cbd44bb7ce655062"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "04731dcf7811199485c2f3ebc4828c35",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 14913,
"upload_time": "2023-10-08T17:08:10",
"upload_time_iso_8601": "2023-10-08T17:08:10.677878Z",
"url": "https://files.pythonhosted.org/packages/17/19/7ea9a22a69fc23d5ca02e8edf65e4a335a210497794af1af0ef8fda91fa0/win_precise_time-1.4.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ef4446111dd608cfac2f6433b98632495f630af5a7049b809cb7eb48e58d82bb",
"md5": "79c4e583cb8edc657de154dc6d359d3f",
"sha256": "3e23693201a0fc6ca39f016871e2581e20c91123734bd48a69259f8c8724eedb"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp37-cp37m-win32.whl",
"has_sig": false,
"md5_digest": "79c4e583cb8edc657de154dc6d359d3f",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.7",
"size": 14721,
"upload_time": "2023-10-08T17:08:11",
"upload_time_iso_8601": "2023-10-08T17:08:11.548925Z",
"url": "https://files.pythonhosted.org/packages/ef/44/46111dd608cfac2f6433b98632495f630af5a7049b809cb7eb48e58d82bb/win_precise_time-1.4.2-cp37-cp37m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c44b62a120dae678446d33a1a0e888df19d89c95eee1c8df4ec8d45bd93199b3",
"md5": "c6ff2eb80a81637ddaa53e49d0452e8e",
"sha256": "07ef644d1bb7705039bc54abfe4b45e99e8dc326dfd1dad5831dab19670508cb"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "c6ff2eb80a81637ddaa53e49d0452e8e",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.7",
"size": 14954,
"upload_time": "2023-10-08T17:08:12",
"upload_time_iso_8601": "2023-10-08T17:08:12.466193Z",
"url": "https://files.pythonhosted.org/packages/c4/4b/62a120dae678446d33a1a0e888df19d89c95eee1c8df4ec8d45bd93199b3/win_precise_time-1.4.2-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d32b2b0d6c0b92cb755ac4f5b64bc8d3dbd2dc5e39b711cded12f367be43afcc",
"md5": "31c8dff117f618f0f10c85b92287ae01",
"sha256": "0a953b00772f205602fa712ef68387b8fb213a30b267ae310aa56bf17605e11b"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "31c8dff117f618f0f10c85b92287ae01",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 14706,
"upload_time": "2023-10-08T17:08:13",
"upload_time_iso_8601": "2023-10-08T17:08:13.657960Z",
"url": "https://files.pythonhosted.org/packages/d3/2b/2b0d6c0b92cb755ac4f5b64bc8d3dbd2dc5e39b711cded12f367be43afcc/win_precise_time-1.4.2-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e533f582f0a130f3362f2d0dd0d98f69b0f4f95a079f2390161b1773102fcc06",
"md5": "0f93c0274253f546107247d8b8891a7d",
"sha256": "b5d83420925beca302b386b19c3e7414ada84b47b42f0680207f1508917a1731"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "0f93c0274253f546107247d8b8891a7d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 14931,
"upload_time": "2023-10-08T17:08:15",
"upload_time_iso_8601": "2023-10-08T17:08:15.120143Z",
"url": "https://files.pythonhosted.org/packages/e5/33/f582f0a130f3362f2d0dd0d98f69b0f4f95a079f2390161b1773102fcc06/win_precise_time-1.4.2-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "342a9f4b13ffe4a876f12ad7d7321a928f910865ff0c50aa91d3725ac1181287",
"md5": "38af8e601552d0bd140b84146a67ee8c",
"sha256": "50d11a6ff92e1be96a8d4bee99ff6dc07a0ea0e2a392b0956bb2192e334f41ba"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "38af8e601552d0bd140b84146a67ee8c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 14709,
"upload_time": "2023-10-08T17:08:16",
"upload_time_iso_8601": "2023-10-08T17:08:16.135752Z",
"url": "https://files.pythonhosted.org/packages/34/2a/9f4b13ffe4a876f12ad7d7321a928f910865ff0c50aa91d3725ac1181287/win_precise_time-1.4.2-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "17cf4237d55123e107f32ba1417d00f7b0ea0e894bb68e495678db52bdccab5b",
"md5": "d4d9ab005ffe711ccb2d61ebe4761d79",
"sha256": "3f510fa92d9c39ea533c983e1d62c7bc66fdf0a3e3c3bdda48d4ebb634ff7034"
},
"downloads": -1,
"filename": "win_precise_time-1.4.2-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "d4d9ab005ffe711ccb2d61ebe4761d79",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 14932,
"upload_time": "2023-10-08T17:08:17",
"upload_time_iso_8601": "2023-10-08T17:08:17.588919Z",
"url": "https://files.pythonhosted.org/packages/17/cf/4237d55123e107f32ba1417d00f7b0ea0e894bb68e495678db52bdccab5b/win_precise_time-1.4.2-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9eb021547e16a47206ccdd15769bf65e143ade1ffae67f0881c855f76e44e9fa",
"md5": "f1d257822106991877d2bc2f2edc2269",
"sha256": "89274785cbc5f2997e01675206da3203835a442c60fd97798415c6b3c179c0b9"
},
"downloads": -1,
"filename": "win-precise-time-1.4.2.tar.gz",
"has_sig": false,
"md5_digest": "f1d257822106991877d2bc2f2edc2269",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 7982,
"upload_time": "2023-10-08T17:08:18",
"upload_time_iso_8601": "2023-10-08T17:08:18.618034Z",
"url": "https://files.pythonhosted.org/packages/9e/b0/21547e16a47206ccdd15769bf65e143ade1ffae67f0881c855f76e44e9fa/win-precise-time-1.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-08 17:08:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zariiii9003",
"github_project": "win-precise-time",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "win-precise-time"
}