第一天: 保持清醒
-
背景:掉入操作系统世界,一秒产生十二万八千个念头,陷入迷茫,丢失了存在的意义。
-
结论:应当保持清醒的状态,清醒才能知道下一步该做什么。
-
方法:做什么事情都开多一个协程,感应呼吸。
-
原理:操作系统的时间单位–>时间切片,一次呼吸是一个中断信号,中断处理程序是感应呼吸。
-
秩序:有序对抗无序,只要保持呼吸,生命自己会变得有序。
# -*- coding: utf-8 -*-
import time
import random
import asyncio
def callback():
'''
中断处理程序
'''
print(f"[{time.ctime()[11:19]}] - 感应呼吸")
async def breath(start, end):
'''
呼吸程序,假定一次呼吸4到7秒
Args:
start (int): 最短呼吸时长
end (int): 最长呼吸时长
'''
await asyncio.sleep(random.uniform(start, end))
async def make_breath():
'''
呼吸驱动,每次呼吸完成调用中断处理程序
'''
while True:
await breath(4, 7)
callback()
async def do_somthing(something, duration, breathe):
'''
做事程序,做什么事情都要保持呼吸
Args:
something (str): 做某事
duration (int): 持续时长
breathe (asyncio.Task): 呼吸驱动,事情完成后结束
'''
print(f"[{time.ctime()[11:19]}] - 正在{something}")
await asyncio.sleep(duration)
breathe.cancel()
print(f"[{time.ctime()[11:19]}] - {something}完成")
def main():
'''
调度程序
'''
loop = asyncio.get_event_loop()
breathe = loop.create_task(make_breath())
todo = do_somthing('发呆', 30, breathe)
loop.run_until_complete(asyncio.wait([breathe, todo]))
loop.close()
if __name__ == '__main__':
main()
输出
[13:27:39] - 正在发呆
[13:27:44] - 感应呼吸
[13:27:50] - 感应呼吸
[13:27:57] - 感应呼吸
[13:28:03] - 感应呼吸
[13:28:08] - 感应呼吸
[13:28:09] - 发呆完成
活不过第一天,卒。