Consign
Generator-based Coroutines, Easy to use, Using the yield syntax
consign 是基于 generator 的协程框架,易于使用,使用 yield 语法
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. 享受开源
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyconsign-1.0.3.tar.gz | 21.3 kB | Without provenance | Details for pyconsign-1.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyconsign-1.0.3-py3-none-any.whl | Python 3 | none | any | Details for pyconsign-1.0.3-py3-none-any.whl |
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
|
Security for pyconsign 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.