为什么loop写在,fetcher类的外面?

来源:12-4 select+回调+事件循环获取html-2

oracola

2021-10-24

def loop():
    #事件循环,不停的请求socket的状态并调用对应的回调函数
    #1. select本身是不支持register模式
    #2. socket状态变化以后的回调是由程序员完成的
    while not stop:
        ready = selector.select()
        for key, mask in ready:
            call_back = key.data
            call_back(key)
    #回调+事件循环+select(poll\epoll)

这里的loop为什么写在Fetcher外面。
而且调用回调函数时,虽然回调函数是Fetcher类的方法,回调函数也没用Fetcher.回调函数的形式
这么做的原因是?

写回答

1回答

bobby

2021-10-25

call_back(key) 这里的call_back就是注册到loop中的函数,也就是featcher中注册的函数到loop中,然后这个函数call_back运行的时候在执行到下一个注册socket事件的时候又会返回loop继续获取下一个

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程