PyFerno python3async-inferno的异步/承诺库
pyferno的Python项目详细描述
PyFerno-python3async inferno的异步/承诺库
这个库的思想是提供在Python中使用async/await的简单方法。在
创建这个库背后的历史是我的背景节点.js发展。 节点.js由于其基于事件的特性,对async/await有很好的支持。在
有一个优秀的Javascript承诺库[Bluebird][https://github.com/petkaantonov/bluebird]. 它被用作灵感来源。在
“Promise”这个名字也来自Javascript世界。在
对于那些没有使用过Javascript承诺的人来说,你可以把它们看作是“完成或者不完成任务的方法” 将来的某个时候。那就等着吧。而且它不会在同一时间阻塞/扰乱他人”:)
现在这个库导出了两个异步处理列表和dict的方法。在
使用
包含任务列表
from pyferno.promise import Promise
async def async_worker_fn():
# do something asynchronously
return something
tasks = [
async_worker_fn(),
async_worker_fn(),
async_worker_fn()
]
out = await Promise.all(tasks, progress="A nice progressbar")
print(out)
有任务指令
^{pr2}$有更多的异步上下文
import asyncio
from pyferno.promise import Promise
async def async_worker_fn():
# do something asynchronously
return something
# this function wraps the main logic into async method
async def main_async_wrapper():
tasks = [
async_worker_fn(),
async_worker_fn(),
async_worker_fn()
]
out = await Promise.all(tasks, progress="A nice progressbar")
return out
# note, this is "normal" synchronous function
def main():
loop = asyncio.get_event_loop()
out = loop.run_until_complete(main_async_wrapper())
loop.close()
print(out)
if __name__ == "__main__":
main()
美国石油学会
在答应。全部(\u Promise\uu tasks:list,concurrency:int=10,progress:object=None)->列表
通过使用信号量限制并发性,异步运行任务列表
:param __tasks: List of tasks
:param concurrency: Concurrency of running tasks, integer. Defaults to 10
:param progress: Progress bar message or boolean True to display default progress bar
:return: Returns list of finished tasks (fulfilled promises)
在承诺。道具(\u Promise\uu props:dict,concurrency:int=10,progress:object=None)—>;dict
通过使用信号量限制并发性b,异步运行key的dict,task。 所有任务完成后,使用相同的键将结果映射回字典。 如果任何任务失败,它将失败
:param __tasks: Dict with name:task pairs. Task is an async function
:param concurrency: Concurrency of running tasks, integer. Defaults to 10
:param progress: Progress bar message or boolean True to display default progress bar
:return: Returns dict with name:<finished task> pairs.
发布包
python3 setup.py sdist bdist_wheel
twine
许可证
这个图书馆有麻省理工学院的许可证。在
- 项目
标签: