异步编程示例01

import time
import random
import aiohttp
import asyncio
import threading


async def hello(index):       # 通过关键字async定义协程
    print('Hello world! index=%s, thread=%s' % (index, threading.currentThread()))
    sleep_time = random.randint(2, 5)
    await asyncio.sleep(sleep_time)     # 模拟IO任务
    print('Hello again! index=%s, sleep time=%d, thread=%s' % (index, sleep_time, threading.currentThread()))


def run_hello():
    loop = asyncio.get_event_loop()     # 得到一个事件循环模型
    tasks = [hello(1), hello(2)]        # 初始化任务列表
    loop.run_until_complete(asyncio.wait(tasks))    # 执行任务
    loop.close()                        # 关闭事件循环列表


async def get(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            print(url, resp.status)
            print(url, await resp.text())


def run_get():
    loop = asyncio.get_event_loop()     # 得到一个事件循环模型
    tasks = [                           # 初始化任务列表
        get("http://zhushou.360.cn/detail/index/soft_id/3283370"),
        get("http://zhushou.360.cn/detail/index/soft_id/3264775"),
        get("http://zhushou.360.cn/detail/index/soft_id/705490")
    ]
    loop.run_until_complete(asyncio.wait(tasks))    # 执行任务
    loop.close()


def main():
    time_start = time.time()

    # run_hello()
    run_get()

    print('total use {} seconds'.format(time.time() - time_start))


if __name__ == "__main__":
    main()

results matching ""

    No results matching ""