标准multiprocessing模块的AsyncIO版本
项目描述
aiomultiprocess
将现代Python代码库的性能提升到新的水平。
单独来看,AsyncIO和multiprocessing都有用,但有限:AsyncIO仍然无法超过GIL的速度,而multiprocessing一次只能处理一个任务。但结合使用,它们可以充分发挥其真正潜力。
aiomultiprocess提供了一个简单的接口,同时在每个子进程中运行完整的AsyncIO事件循环,使得Python应用程序中从未见过的高并发级别成为可能。每个子进程可以同时执行多个协程,仅受工作负载和可用核心数量的限制。
在几秒钟内收集数以万计的网络请求就像这样简单
async with Pool() as pool:
results = await pool.map(<coroutine function>, <items>)
安装
aiomultiprocess需要Python 3.6或更高版本。您可以从PyPI安装它
$ pip3 install aiomultiprocess
用法
大多数情况下,aiomultiprocess尽可能模仿标准multiprocessing模块,同时考虑到可以利用异步功能的地方。
在工作进程池上运行您的异步任务很容易
import asyncio
from aiohttp import request
from aiomultiprocess import Pool
async def get(url):
async with request("GET", url) as response:
return await response.text("utf-8")
async def main():
urls = ["https://noswap.com", ...]
async with Pool() as pool:
async for result in pool.map(get, urls):
... # process result
if __name__ == '__main__':
# Python 3.7
asyncio.run(main())
# Python 3.6
# loop = asyncio.get_event_loop()
# loop.run_until_complete(main())
有关更多详细信息和使用示例,请参阅用户指南。
有关进一步背景,请观看2018年PyCon US关于aiomultiprocess的演讲,《跳出GIL的思考》
幻灯片可在演讲者板上找到。
许可证
aiomultiprocess版权所有Amethyst Reese,并许可在MIT许可证下。我在此存储库中向您提供的代码是在开源许可证下提供的。这是我的个人存储库;您收到的我的代码许可是由我而非我的雇主提供的。有关详细信息,请参阅LICENSE
文件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
aiomultiprocess-0.9.1.tar.gz (24.5 kB 查看哈希值)
构建分发
aiomultiprocess-0.9.1-py3-none-any.whl (17.5 kB 查看哈希值)
关闭
aiomultiprocess-0.9.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f0231dbe0291e15325d7896ebeae0002d95a4f2675426ca05eb35f24c60e495b |
|
MD5 | c89390ad3fb01b2a8de5dbff6fc10fff |
|
BLAKE2b-256 | 02d41e69e17dda5df91734b70d03dbbf9f222ddb438e1f3bf4ea8fa135ce46de |
关闭
aiomultiprocess-0.9.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a7b3bb3c38dbfb4d9d1194ece5934b6d32cf0280e8edbe64a7d215bba1322c6 |
|
MD5 | 231cc5ec4a5e0f98138fff9bf5431b52 |
|
BLAKE2b-256 | ad14c48c2f5c96960f5649a72b96a0a31d45384b37d89a63f7ccea76bf4fceba |