繁体   English   中英

运行脚本时使用多处理

[英]using multiprocessing when running a script

我正在运行一个脚本,该脚本需要一个URL并在本地下载文件,然后将文件名作为参数传递给函数。问题是这样做花费了很多时间。所以我尝试使用Threadpool,但这并不能任何改进。我做错了,这是它的样子。

pool = ThreadPool(processes=8)
ocr_result = pool.apply_async(download_file, (url,))
file_name = ocr_result.get()
async_result = pool.apply_async(return_label, (file_name,))
prediction, prediction_list  = async_result.get() 

任何建议都会很有帮助。 提前致谢。

如注释中所建议,有一个使用aiohttpasyncio的示例:

def main():
    # limit concurrency
    loop = asyncio.get_event_loop()
    connector = aiohttp.TCPConnector(limit=100)

    # login if required
    async with aiohttp.ClientSession(loop=loop, connector=connector) as sess:
        async with sess.post(
                LOGIN_URL, data=payload) as resp:

            # ensure login success
            assert resp.status == 200
            for url in download_links:
                await download(url, sess)

您的下载功能如下所示:

async def download(url, sess):
    async with sess.get(url) as resp:
        if resp.status == 200:
            # post process

最后使用一个主循环:

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM