asyncio文档学习——消息循环EventLoop例子2
来源:互联网 发布:mysql pdf 微盘 编辑:程序博客网 时间:2024/06/05 00:34
#coding:utf-8
import asyncio
import datetime
def display_date(end_time,loop):
print(datetime.datetime.now())
if(loop.time()+2)<end_time:
#1.为什么间隔时间越长,执行时间越长2.无论时间到否,到最后时间会在输出一次
'''
延迟调用
消息循环拥有自己内置的时钟用来计算超时。使用哪个时钟依赖于具体平台的消息循环实现,
理想上它是一个单调一致性的时钟。这个时钟通常不同于time.time()
超时(相对时延和绝对时间)应该不超过一天。
AbstractEventLoop.call_later(delay, callback, *args)
将被调用的回调函数安排在一个给出的延时秒数后(int或float都行)
返回asyncio.Handle(回调包装器对象)的一个实例,它将被用来取消回调。
每次call_later()中只会调用一次回调函数。如果两个回调函数同时被调度,没有定义谁将优先。
可选的位置参数将在调用回调函数时传递给回调函数。如果你想要在调用回调函数传递一些已经命名的参数,使用一个闭包或者functools.partial()。
使用functools.partial()传递关键字给回调函数
'''
loop.call_later(2,display_date,end_time,loop)
else:
loop.stop()
loop = asyncio.get_event_loop()
'''
安排一个回调函数,它将尽快地被调用。当控制器返回一个事件环时,这个回调函数将在call_soon()返回值之后就被调用
这个操作像一个先进先出队列,回调函数按注册的顺序被调用。每一个回调函数都将只被调用一次。
回调函数之后任何位置的参数都将在回调函数被调用时传递给回调函数
返回一个asyncio.Handle的示例,他可以被用来取消回调
使用functools.partial去传递关键字给回调函数
非线程安全
'''
end_time = loop.time()+5.0
loop.call_soon(display_date,end_time,loop)
'''
运行到调用stop()
1.stop......run_forever:轮询I/O选择器直到0超时,运行所有已经被调度的回调函数去响应I/O事件包括那些被调度过的,然后退出
2.stop-run_forever:运行当下回调队列,退出。注意被回调调度过的回调不会在此时运行,他们会在下一次run_forever时运行
'''
loop.run_forever()
'''
关闭事件环。事件环必须已经停止。挂起的回调函数会丢失。
清空队列同时切断执行,不会等待执行结束。
这是幂等的,不可逆的。
在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.
在此方法之后没方法可以再被调用。
'''
loop.close()
import asyncio
import datetime
def display_date(end_time,loop):
print(datetime.datetime.now())
if(loop.time()+2)<end_time:
#1.为什么间隔时间越长,执行时间越长2.无论时间到否,到最后时间会在输出一次
'''
延迟调用
消息循环拥有自己内置的时钟用来计算超时。使用哪个时钟依赖于具体平台的消息循环实现,
理想上它是一个单调一致性的时钟。这个时钟通常不同于time.time()
超时(相对时延和绝对时间)应该不超过一天。
AbstractEventLoop.call_later(delay, callback, *args)
将被调用的回调函数安排在一个给出的延时秒数后(int或float都行)
返回asyncio.Handle(回调包装器对象)的一个实例,它将被用来取消回调。
每次call_later()中只会调用一次回调函数。如果两个回调函数同时被调度,没有定义谁将优先。
可选的位置参数将在调用回调函数时传递给回调函数。如果你想要在调用回调函数传递一些已经命名的参数,使用一个闭包或者functools.partial()。
使用functools.partial()传递关键字给回调函数
'''
loop.call_later(2,display_date,end_time,loop)
else:
loop.stop()
loop = asyncio.get_event_loop()
'''
安排一个回调函数,它将尽快地被调用。当控制器返回一个事件环时,这个回调函数将在call_soon()返回值之后就被调用
这个操作像一个先进先出队列,回调函数按注册的顺序被调用。每一个回调函数都将只被调用一次。
回调函数之后任何位置的参数都将在回调函数被调用时传递给回调函数
返回一个asyncio.Handle的示例,他可以被用来取消回调
使用functools.partial去传递关键字给回调函数
非线程安全
'''
end_time = loop.time()+5.0
loop.call_soon(display_date,end_time,loop)
'''
运行到调用stop()
1.stop......run_forever:轮询I/O选择器直到0超时,运行所有已经被调度的回调函数去响应I/O事件包括那些被调度过的,然后退出
2.stop-run_forever:运行当下回调队列,退出。注意被回调调度过的回调不会在此时运行,他们会在下一次run_forever时运行
'''
loop.run_forever()
'''
关闭事件环。事件环必须已经停止。挂起的回调函数会丢失。
清空队列同时切断执行,不会等待执行结束。
这是幂等的,不可逆的。
在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.
在此方法之后没方法可以再被调用。
'''
loop.close()
阅读全文
0 0
- asyncio文档学习——消息循环EventLoop例子2
- asyncio文档学习——消息循环EventLoop例子1
- asyncio文档学习——消息循环EventLoop例子3
- Python asyncio文档翻译--运行一个消息循环EventLoop
- Python asyncio文档翻译---事件环规则:通用的消息循环EventLoop的get,set方法
- python学习——asyncio
- asyncio 官方文档
- Python asyncio文档翻译
- Python asyncio文档翻译--asyncio.Future
- muduo网络库学习(四)事件驱动循环EventLoop
- muduo库阅读(29)——Net部分:Reactor(EventLoop事件循环)
- Muduo:EventLoop“循环”什么?
- asyncio学习(1)
- python asyncio学习记录
- muduo库阅读(35)——Net部分:用于执行事件循环(EventLoop)的线程类EventLoopThread
- 学习随笔——Java循环语句小例子
- Netty 学习 - EventLoop
- asyncio
- struts2学习之---配置处理结果
- PCB中过孔和通孔焊盘的区别
- 华为OJ——整数与IP地址间的转换
- Eclipse报错Java compiler level does not match the version of the installed Java project facet.解决办法
- Android Studio 快捷键
- asyncio文档学习——消息循环EventLoop例子2
- 进程和线层之间的关系
- Angular的过滤器和自定义过滤器
- Git版本恢复命令reset(转载)
- 日记
- 【长沙·签约】中企动力与湖南湘中制药同在 开启云平台服务之旅
- Java 8 Streams部分API简介
- Cannot find `include file "head.v" in directories
- 修复Homebrew权限问题