Supervisor#

class consign.Supervisor(task)[源代码]#

基类:object

wait 的底层实现

waitSupervisor 类的上层封装, wait 向外暴露,但 Supervisor 不被直接暴露

Supervisor 能够阻塞等待一个 Task 任务完成,并在期间参与工作

Supervisor 的原理是: Supervisor 向此 Task 类中的 WorkArea 提交 一个 轮询 任务

轮询 任务的作用就是每次执行控制权切换前判断 Task 的状态是否是已完成

Supervisor 在接收到 Task 完成信号后,会在执行完当前手头内容后退出阻塞并返回返回值

更多详情请查看 wait 函数

参数

task (Task) – 需要等待的 Task 类, 如果传入的对象并非 Task 类,原样返回

Methods Summary

polling_func()

轮询任务,用于判断 Task 的状态

run_until_complete([time_out])

阻塞、工作直到轮询任务完成

Methods Documentation

polling_func()[源代码]#

轮询任务,用于判断 Task 的状态

他是一个 coroutine 修饰的协程函数

Supervisor 会自动继承 Task 中的 WorkArea 并在此提交

每次执行控制权切换前判断 Task 的状态是否是已完成,完成会告知 Supervisor

返回

None

run_until_complete(time_out=0.1)[源代码]#

阻塞、工作直到轮询任务完成

参数

time_out

其实就是 CoroutineWorker中work_once的参数

等待 WorkArea 队列获取内容的等待超时时长

也是最短轮询的间隔,他一般用在多线程中,当对应 WorkAreaqueue 为空时,time_out 才会触发

返回

Task 类中的value,也就是对应协程的返回值