没有项目描述

aioexec的Python项目详细描述


aioexec

说明

aioexec是围绕concurrent.futures包和asyncio的loop.run_in_executor方法的一个简单、直观的界面。aioexec是leightweight,没有依赖关系和~100 loc。

要求

aioexec需要python>= 3.6

安装

pip install aioexec

pipenv install aioexec

用法

没有aioexec通常运行这样的执行器:

importaysnciofromconcurrent.futuresimportProcessPoolExecutor# ...loop=asyncio.get_event_loop()foo=awaitloop.run_in_executor(ProcessPoolExecutor(1),lambda:my_func(foo='baz'))

使用aioexec也可以这样做:

fromaioexecimportProcs# ...foo=awaitProcs(1).call(my_func,foo='baz')

您可以在同一个执行器中调用一个batch函数,如下所示:

importasynciofromaioexecimportProcs,Call# ...my_values=awaitasyncio.gather(*Procs(3).batch(Call(my_func,foo='bar'),Call(my_func,foo='baz'),Call(my_func,foo='qux'),))

这与理解很好地配合:

importasynciofromaioexecimportProcs,Call# ...my_values=awaitasyncio.gather(*Procs(10).batch(Call(my_func,foo=i)foriinrange(0,10)))

您还可以生成一个pool,并使用同一个执行器进行多个不同的调用:

importasynciofromaioexecimportProcs,Call# ...withProcs(10)aspool:value_a=awaitpool.call(my_func,foo='baz')value_b=awaitaio.gather(*pool.batch(Call(my_func,foo=i)foriinrange(0,10)))# etc...

上面的例子同样适用于Threads,例如:

fromaioexecimportThreads# ...foo=awaitThreads(1).call(my_func,foo='baz')

如有必要,您可以将事件loop传递给执行者,如下所示:

foo=awaitThreads(1,my_loop).call(my_func,foo='baz')foo=awaitProcs(1,my_loop).call(my_func,foo='baz')

开发/测试

克隆repo并安装开发包:

pipenv install --dev

运行测试:

pipenv run python make.py test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归