运行 脚本时使用多处理

using multiprocessing when running a script

我是 运行 一个脚本,它接受 url 并在本地下载文件,然后将文件名作为参数传递给 function.The 问题是这样做需要很多 time.So 我尝试使用 Threadpool,但这并没有给出任何 improvements.Am 我做错了,这是它的样子。

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())