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()使用相同,该方法是考虑线程安全的问题基础上使用。例如多个线程共享变量的时候使用该方法
网友评论