tsdeque


Nametsdeque JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryThread-safe double-ended queue
upload_time2025-08-01 16:44:50
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords deque thread-safe concurrency multithreading queue
VCS
bugtrack_url
requirements pytest
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tsdeque — Thread-Safe Deque with Task Tracking ⚙️

---

## English

**tsdeque** is a thread-safe, double-ended queue implementation with built-in task tracking and threshold-based event notifications. Designed for multi-threaded environments, it ensures safe concurrent access and precise control over queue size and task completion status.

### Features
- Thread-safe double-ended queue (`deque`) operations  
- Support for max size limitation with blocking `put` operations  
- Task counting with `task_done()` and `join()` methods, similar to `queue.Queue`  
- Threshold events triggered on hitting min/max counts  
- Customizable blocking timeouts on put/get operations  
- Designed with performance and correctness in mind  

### Installation
```bash
pip install tsdeque
````

### Usage example

```python
from tsdeque import ThreadSafeDeque

deque = ThreadSafeDeque(maxsize=5)
deque.put("item")
item = deque.get()
deque.task_done()
deque.join()
```

### Testing 🧪

Run tests with:

```bash
python -m pytest
```

---

## Русский

**tsdeque** — потокобезопасная двухсторонняя очередь с учетом количества задач и триггерами событий на пороговых значениях. Подходит для многопоточного программирования, гарантирует корректный доступ и управление размером очереди и состоянием задач.

### Возможности

* Потокобезопасные операции с двухсторонней очередью (`deque`)
* Поддержка ограничения по максимальному размеру с блокирующими операциями `put`
* Подсчет задач с методами `task_done()` и `join()`, аналогично `queue.Queue`
* События срабатывают при достижении минимальных и максимальных порогов
* Настраиваемые таймауты блокирующих операций
* Оптимизирован для производительности и надежности

### Установка

```bash
pip install tsdeque
```

### Пример использования

```python
from tsdeque import ThreadSafeDeque

deque = ThreadSafeDeque(maxsize=5)
deque.put("item")
item = deque.get()
deque.task_done()
deque.join()
```

### Тестирование 🧪

Запуск тестов:

```bash
python -m pytest
```

---

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "tsdeque",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "deque, thread-safe, concurrency, multithreading, queue",
    "author": null,
    "author_email": "kotmarkot <andrey.patrusov@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/06/04/661d026fb46490e2e5511493ebc10591f5b7bae658f5379996f41e381f31/tsdeque-1.0.1.tar.gz",
    "platform": null,
    "description": "# tsdeque \u2014 Thread-Safe Deque with Task Tracking \u2699\ufe0f\n\n---\n\n## English\n\n**tsdeque** is a thread-safe, double-ended queue implementation with built-in task tracking and threshold-based event notifications. Designed for multi-threaded environments, it ensures safe concurrent access and precise control over queue size and task completion status.\n\n### Features\n- Thread-safe double-ended queue (`deque`) operations  \n- Support for max size limitation with blocking `put` operations  \n- Task counting with `task_done()` and `join()` methods, similar to `queue.Queue`  \n- Threshold events triggered on hitting min/max counts  \n- Customizable blocking timeouts on put/get operations  \n- Designed with performance and correctness in mind  \n\n### Installation\n```bash\npip install tsdeque\n````\n\n### Usage example\n\n```python\nfrom tsdeque import ThreadSafeDeque\n\ndeque = ThreadSafeDeque(maxsize=5)\ndeque.put(\"item\")\nitem = deque.get()\ndeque.task_done()\ndeque.join()\n```\n\n### Testing \ud83e\uddea\n\nRun tests with:\n\n```bash\npython -m pytest\n```\n\n---\n\n## \u0420\u0443\u0441\u0441\u043a\u0438\u0439\n\n**tsdeque** \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447.\n\n### \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\n\n* \u041f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e (`deque`)\n* \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 `put`\n* \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0441 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 `task_done()` \u0438 `join()`, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e `queue.Queue`\n* \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\n* \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\n* \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install tsdeque\n```\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n\n```python\nfrom tsdeque import ThreadSafeDeque\n\ndeque = ThreadSafeDeque(maxsize=5)\ndeque.put(\"item\")\nitem = deque.get()\ndeque.task_done()\ndeque.join()\n```\n\n### \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \ud83e\uddea\n\n\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432:\n\n```bash\npython -m pytest\n```\n\n---\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Thread-safe double-ended queue",
    "version": "1.0.1",
    "project_urls": {
        "Homepage": "https://github.com/PATRUSOV/python-thread-safe-deque"
    },
    "split_keywords": [
        "deque",
        " thread-safe",
        " concurrency",
        " multithreading",
        " queue"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "903dbe09a284447758b338f874f213e1700731a2d09cb2f3f1e648d5ba8fcb17",
                "md5": "c509b3c90db07864d77a780d3b7553d9",
                "sha256": "f4cdd8b87248bbea9d6db809d2b70a1500dc114a8123b4ce596903c11084b3b1"
            },
            "downloads": -1,
            "filename": "tsdeque-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c509b3c90db07864d77a780d3b7553d9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 10143,
            "upload_time": "2025-08-01T16:44:49",
            "upload_time_iso_8601": "2025-08-01T16:44:49.266414Z",
            "url": "https://files.pythonhosted.org/packages/90/3d/be09a284447758b338f874f213e1700731a2d09cb2f3f1e648d5ba8fcb17/tsdeque-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0604661d026fb46490e2e5511493ebc10591f5b7bae658f5379996f41e381f31",
                "md5": "dc64f4c2a7901ae4d28e2b72013196b3",
                "sha256": "e932d5f015e66679a783dc250c8cff862d6f8238cfa2def430e9586c5a64bc78"
            },
            "downloads": -1,
            "filename": "tsdeque-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "dc64f4c2a7901ae4d28e2b72013196b3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 11598,
            "upload_time": "2025-08-01T16:44:50",
            "upload_time_iso_8601": "2025-08-01T16:44:50.777483Z",
            "url": "https://files.pythonhosted.org/packages/06/04/661d026fb46490e2e5511493ebc10591f5b7bae658f5379996f41e381f31/tsdeque-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-01 16:44:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PATRUSOV",
    "github_project": "python-thread-safe-deque",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "pytest",
            "specs": []
        }
    ],
    "lcname": "tsdeque"
}
        
Elapsed time: 1.70939s