标准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 |