美文网首页
python asyncio并发编程(4)

python asyncio并发编程(4)

作者: TheRightPath1 | 来源:发表于2020-01-20 16:56 被阅读0次

1. call_soon()方法的使用

call_soon方法用于让asyncio直接运行一个函数, 不用定义协程。其含义表示即刻执行, 但不是下一行代码就执行,而是在队列里面等到下一个循环以后就执行。

import asyncio


def call_test(url):
    print(url)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.call_soon(call_test, 'http://www.baidu.com')
    loop.run_forever()

2.call_later()方法的使用

call_later方法用于让一个函数在指定的时间运行。它第一个参数是函数指定延迟调用的时间,它会根据延迟调用的时间来从小到大运行函数。(call_soon要先于call_later运行)

import asyncio


def call_test(n):
    print('sleep {}'.format(n))


def loop_stop(loop):
    loop.stop()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.call_later(2, call_test, 2)
    loop.call_later(4, call_test, 4)
    loop.call_later(3, call_test, 3)
    loop.call_soon(call_test, 6)
    loop.run_forever()

运行结果

sleep 6
sleep 2
sleep 3
sleep 4

3.call_at()方法的使用

call_later()用于在指定的时间运行函数,但这个时间是指loop中的单调时间与传统的时间含义不同

import asyncio


def call_test(n, loop):
    print('sleep {} {}'.format(n, loop.time()))


def loop_stop(loop):
    loop.stop()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    # 使用loop.time方法获取循环中的时间
    times = loop.time()
    loop.call_at(times+4, call_test, 4, loop)
    loop.call_at(times+2, call_test, 2, loop)
    loop.call_at(times+3, call_test, 3, loop)
    loop.call_soon(call_test, 6, loop)
    loop.run_forever()

运行结果

sleep 6 10729.109
sleep 2 10731.109
sleep 3 10732.109
sleep 4 10733.109

3.loop.call_soon_threadsafe()方法使用

loop.call_soon_threadsafe()方法使用与loop.call_soon()使用相同,该方法是考虑线程安全的问题基础上使用。例如多个线程共享变量的时候使用该方法

相关文章

网友评论

      本文标题:python asyncio并发编程(4)

      本文链接:https://www.haomeiwen.com/subject/qxijzctx.html