修改例程flags_asyncio.py使能在python311环境下运行

先贴上修改后的例程:
import asyncio
import aiohttp
import time
from flags import BASE_URL, save_flag, show, POP20_CC


async def get_flag(cc):
    async with aiohttp.ClientSession() as session:
        url = '{}/{cc}/{cc}.gif'.format(BASE_URL, cc=cc.lower())
        async with session.get(url) as response:
            image = await response.read()
            return image


async def download_one(cc):
    image = await get_flag(cc)
    show(cc)
    save_flag(image, cc.lower() + '.gif')
    return cc


async def download_many(cc_list):
    # loop = asyncio.new_event_loop()
    tasks = [asyncio.create_task(download_one(cc)) for cc in cc_list]
    wait_coro, pending = await asyncio.wait(tasks)
    # res = loop.run_until_complete(wait_coro)
    # loop.close()
    return len(wait_coro)


def main(download_many, cc_list):
    t0 = time.time()
    count = asyncio.run(download_many(cc_list))
    elapsed = time.time() - t0
    msg = '\n{} flags downloaded in {:.2f}s'
    print(msg.format(count, elapsed))


if __name__ == '__main__':
    main(download_many, POP20_CC)

修改之处主要有三处:
1,在get_flag函数内使用
async with aiohttp.ClientSession() as session:
    async with session.get(url) as response:
替换原来的:
yield from aiohttp.request('GET', url)
2,在download_many函数内弃用loop,直接用asyncio.create_task生成Future迭代器传给asyncio.wait函数
3,在main函数里使用asyncio.run函数调用download_many函数

最后贴上例程运行输出:
C:\Users\fange\Scripts\python.exe D:\fluentPy\chapter17_18\flags_asyncio.py 
IN CN BR PK US ET VN BD CD FR JP DE PH ID EG NG RU IR TR MX 
20 flags downloaded in 10.55s

进程已结束,退出代码为 0
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[rosrun] Couldn't find executable named cv_bridge_test.py below /home/huang/catkin_ws/src/robot_vision 是一个ROS中的错误提示,它表示在指定路径(/home/huang/catkin_ws/src/robot_vision)下找不到名为cv_bridge_test.py的可执行文件。这个错误通常发生在使用rosrun命令时,该命令用于运行ROS软件包中的可执行文件。 要解决这个问题,你需要确保以下几点: 1. 确保该路径下确实存在名为cv_bridge_test.py的可执行文件。你可以使用ls命令检查该文件是否存在。 2. 确保该文件有可执行权限。你可以使用chmod命令给该文件添加可执行权限。 3. 确保你的工作空间(catkin_ws)已经正确地编译了该软件包。你可以使用catkin_make命令编译整个工作空间。 4. 确保你的环境变量设置正确。你可以使用source命令来重新加载你的.bashrc文件,或者使用echo命令来检查ROS_PACKAGE_PATH环境变量是否包含了该软件包的路径。 通过检查以上几点,你应该能够解决这个错误,并成功运行cv_bridge_test.py文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [在ros中使用opencv启动例程 rosrun robot_vision cv_bridge_test.py 遇到的问题](https://blog.csdn.net/wyw1749750673/article/details/127775338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Couldn‘t find executable named person_subscriber below /home/yue/catkin_ws/src/... 找不到可执行文件...](https://blog.csdn.net/qq_40528849/article/details/120921819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值