Skip to main content

Consign

Generator-based Coroutines, Easy to use, Using the yield syntax

consign 是基于 generator 的协程框架,易于使用,使用 yield 语法


版本 | Documentation Status | GitHub release (latest by date) | PyPI

consign 可以使函数得以以协程的方式运行,以更低的代码侵入性,获得更高的效率


快速开始

python>=3.7:consign 几乎没有需要安装的依赖 反之会需要安装 contextvars,仅此而已

你可以通过 pip 快速安装:

pip install pyconsign

或者通过 git 开箱即用

python setup.py install

更多信息请查看 consign's documentation


简单例子

初探特性

>>> from consign import coroutine, asleep, CoroutineWorker
>>> import threading
>>> @coroutine
... def my_test(name: str):
...     print(f"{name} start in {threading.currentThread()}")
...     result = yield asleep(3)
...     print(f"{name} end in {threading.currentThread()} result is {result}")
...     return name
...
>>> test_task1, test_task2 = my_test("task1"), my_test("task2")
>>> test_task1
{
    'task_state': <TaskState.NoStart: 'NoStart'>, 
    'value': <TaskResult.NoGet: 'NoGet'>, 
    'work_area': <'DEFAULT_WORK_AREA' Work at 0x25940db46a0 and in <_MainThread(MainThread, started 31352)>>, 
    'order': {
        'consignor_func': <function my_test at 0x000002593EEF2EA0>, 
        'create_area': <'DEFAULT_WORK_AREA' Work at 0x25940db46a0 and in <_MainThread(MainThread, started 31352)>>,
        'create_callback': None,
        'complete_callback': None
    }
}
>>> CoroutineWorker().loop_work(forever=False)
task1 start in <_MainThread(MainThread, started 24332)>
task2 start in <_MainThread(MainThread, started 24332)>
task1 end in <_MainThread(MainThread, started 24332)> result is None
task2 end in <_MainThread(MainThread, started 24332)> result is None
>>> test_task1
{
    'task_state': <TaskState.TaskDone: 'TaskDone'>,
    'value': 'task1', 
    'work_area': <'DEFAULT_WORK_AREA' Work at 0x23fbe9f46d8 and in <_MainThread(MainThread, started 24332)>>, 
    'order': {
        'consignor_func': <function my_test at 0x0000023FBCB42EA0>, 
        'create_area': <'DEFAULT_WORK_AREA' Work at 0x23fbe9f46d8 and in <_MainThread(MainThread, started 24332)>>, 
        'create_callback': None, 
        'complete_callback': None
    }
}

更多还在路上...

License

This project is licensed under the MIT License. 享受开源

Release files for pyconsign 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyconsign 1.0.3
File Size Uploaded
pyconsign-1.0.3.tar.gz 21.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyconsign 1.0.3
File Interpreter ABI Platform
pyconsign-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 48.2 kB

Release files / pyconsign-1.0.3.tar.gz

Download URL pyconsign-1.0.3.tar.gz
Size 21.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bb34d1a86c5545f1d89324ee4efe1727849995f890538422d3e54ec868a2551f
BLAKE2b-256 checksum
How to use checksums
8107aa39ac21b3b10d427187636ef2de4354dd1e4c2fa4a002779aa4429396aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / pyconsign-1.0.3-py3-none-any.whl

Download URL pyconsign-1.0.3-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75b4be5f2fadcdda4ab98d6d74cfe94e996c4a3492d6bd2d1eb52c773b099bde
BLAKE2b-256 checksum
How to use checksums
9fed1de9d063bdf49686eb3c161b32b7b7fec9b851e9aa25760f997ff09feed6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page