标准多处理模块的异步版本

aiomultiprocess的Python项目详细描述


多进程

将现代python代码库提升到性能的下一个级别。

build statuswindows build statuscode coverageversionlicensecode style

异步和多处理本身很有用,但有限: 异步仍然不能超过gil的速度,而且多处理只能在 一次一个任务。但在一起,他们可以充分发挥自己的真正潜力。

aiomultiprocess提供一个简单的接口,同时运行一个完整的异步事件 在每个子进程上循环,启用前所未有的并发级别 在python应用程序中。每个子进程可以执行多个协程 同时,仅受工作负载和可用核心数的限制。

在几秒钟内收集数万个网络请求非常简单:

asyncwithPool()aspool:results=awaitpool.map(<coroutine>,<items>)

有关更多内容,请观看Pycon US 2018讨论所有最终过程, "Thinking Outside the GIL"

IMAGE ALT TEXT

幻灯片可在Speaker Deck找到。

安装

aiomultiprocess需要python 3.6或更新版本。 您可以从pypi安装它:

$ pip3 install aiomultiprocess

用法

大多数aiomultiprocess在任何时候都模仿标准的多处理模块 可能的,同时考虑从异步功能中受益的地方。

对子进程执行协同程序非常简单:

importasynciofromaiohttpimportrequestfromaiomultiprocessimportProcessasyncdefput(url,params):asyncwithrequest("PUT",url,params=params)asresponse:passasyncdefmain():p=Process(target=put,args=("https://jreese.sh",{}))awaitpasyncio.run(main())

如果您想从协同程序中获得结果,Worker将使其可用:

importasynciofromaiohttpimportrequestfromaiomultiprocessimportWorkerasyncdefget(url):asyncwithrequest("GET",url)asresponse:returnawaitresponse.text("utf-8")asyncdefmain():p=Worker(target=get,args=("https://jreese.sh",{}))response=awaitpasyncio.run(main())

如果您想要一个受管理的工作进程池,那么使用Pool

importasynciofromaiohttpimportrequestfromaiomultiprocessimportPoolasyncdefget(url):asyncwithrequest("GET",url)asresponse:returnawaitresponse.text("utf-8")asyncdefmain():urls=["https://jreese.sh",...]asyncwithPool()aspool:result=awaitpool.map(get,urls)asyncio.run(main())

许可证

aiomultiprocess是版权所有的John Reese,并根据 麻省理工学院的执照。我在一个开放的 来源许可证。这是我的个人存储库;您收到的许可证 我的密码是我写的,不是我老板写的。有关详细信息,请参见LICENSE文件。

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

推荐PyPI第三方库


热门话题
正则表达式使用Java从服务器截断文本   micronaut微服务的java内存消耗   如果私有函数需要相同的输入,java应该在公共函数中显式执行异常检查   为什么我们在java中使用抽象类和抽象方法   Java中接受外来字母的字符串?   cordova Android:ClassNotFoundException,包括ZXing   通过LiveData observer向特定索引添加项时出现java IndexOutOfBoundsException   jsp Java从两个源调用一个servlet   java如何设置网格布局中按钮的位置?   java HashMap返回方法   java JDK错误版本   java如何将现有类集成到新的Swing项目中   java如何在扫描程序位于输入端时使for循环停止   java正则表达式匹配空白表   java组织。格拉德尔。工具。BuildException:设置的代码长度无效   JList中的swing Java格式化字符串   javabeans如何将JavaBean属性映射到另一个名称以进行输出?   ajax请求后的java Rerender RichFaces错误消息