geyser学习记录(day1):将任务拆分的架构
所有的内容都是对这个文档所说的任务分解架构的理解:
geyser的文档:geyser
0.一个核心思想
我们在学习这个框架的时候首先我们得知道这个东西是用来干什么的?设计思想是什么?
这个框架的主要设计思想就是将一个个任务进行拆分,之后通过一个配置文件直接控制全部的程序执行,这样的好处就是我们一旦将代码写完之后,我们进行baseline或是消融实验的时候,我们都不再需要修改代码了,只需要简单的修改配置文件就可以了。
核心思想在我理解看来就是:通过调整一个配置文件可以控制整个程序的执行过程,甚至各个模块之间的执行顺序。并且和原来的代码比起来,我们只需要在原来的代码的各个模块上加入装饰器,编写一个配置文档,开销很低。
1.怎么标识一个资源
1.1使用一个标识来标记一个类的重要性
这个框架当中我们既然要把一个整个的程序拆分成一个个代码块,所以我们就需要解决这些代码块之间的参数传递的问题,显然我们不能使用变量名进行传递了,因为这个东西只在一小部分范围当中产生效果(在当前这个py文件当中我们可能可以找到,出了这个py文件我们就不能通过变量名找到了)。这就需要我们通过class的唯一标识符来寻找到一个个内容。(这个标识在一个项目当中是唯一的)
1.2这个标识符怎么获得
我们只需要右击这个类名,进行点击就可以获得了。
1.3我们只是解决了找到这个东西,那么怎么用?
这就需要我们使用到geyser.utility当中两个小工具:
- reference:我们帮助我们使用类名找到标识
- reflect:我们通过类的标识找到这个类
2.几个主要的概念
2.1Task
Task是任务流模型的基本单元,定义了基本的任务行为。你可以继承Task来定义你的任务,并通过Geyser.task来注册你的任务。
Task这里你交给系统一件他需要完成的任务。
你只需要告诉系统(这都需要使用上面的reference):
- 他完成这个任务可以提供什么依赖;
- 他完成这个任务需要什么依赖;
- 他完成这个任务的恢复需要什么依赖。
这三个你需要按照框架规定的方式进行传入即可
额外说明这个恢复
额外说一下这个恢复的情况,就是如果我们这个task发生了什么意外
2.2落实到代码
我们看一下文档当中给出的例子:
from geyser import Geyser
from taskflow.task import Task@Geyser.task(provides=('foo',))
class Foo(Task):def execute(self, foo):return 'FOO', # 或者 ['FOO']# ^ 注意这里的逗号!
可以看到我们在进行注册时候只需要加入一个装饰器,这个装饰器的参数就是上面提到的三个参数:
为了搞明白这个东西我们需要从两方面理解这个内容:
首先是什么是Task?
如果你继承自这个Task这个类,那么你就需要定义一个excuse函数,这个函数就是在这个任务当中需要完成的任务。
之后是这些参数怎么传入?
1.这个provides是这个任务完成之后提供什么内容:
就是这个任务提供什么内容,这个东西可以给你返回内容逐个对应的命名。这样下面的内容就可以在provides当中直接使用这些名来进行传入。2.这个requires是完成这个任务需要什么内容:
这些requires的内容会被架构,直接传入到excuse函数的参数当中,这样就能顺利完成参数的传入传出。3.这个revert_requirse就是我们在任务执行失败之后进行恢复需要什么内容:
这个东西我们很少使用。
geyser学习记录(day1):将任务拆分的架构相关推荐
- {博学谷学习记录} 超强总结,用心分享|狂野架构师-前置互联网架构演变过程
本章以系统架构,数据架构,两种维度来进行讲解 目录 1 系统架构 1,1 单体架构 1.2 中台战略 2 数据库架构 2,1 单体架构 2.2 主从读写 2.3 分库分表 3 总结 1 系统架构 1, ...
- geyser学习记录(day2):我们在命令行当中怎么使用这个架构?
所有的内容都是对这个文档所说的任务分解架构的理解: geyser的文档:geyser 其实我们只要学习一个命令就行: geyser -l xxx.log -q xxx.yaml > /dev/n ...
- Linux学习记录 Day1(常用命令)
文章目录 Day 1 Linux简介 打开终端页面 Shell简介 在Shell中执行命令 命令行提示符 用户登录 命令帮助 文件操作 目录分析 文件与目录操作 重定向 输出重定向 管道 tee 用户 ...
- 机创仿生青蛙学习记录day1
在阅读仿生机械学前两章之后,我发现研究制作仿生机械的第一步要确定仿生的生物学原理,比如仿生青蛙,这次的题目主要要求青蛙的弹跳能力,也就是说我们需要主要研究青蛙的腿部结构以及身体结构来确定这次制作的机械 ...
- python学习记录 day1
变量定义 变量名 = "字符串" ["a","b "..] 字符 数组 [1,2,3,..] 数字 数组 键入数据 i ...
- css学习记录day1
一.初识css及其发展 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽高.边框样式.边距等)以及版面的布局等外观显 ...
- Netty学习记录-初步认识Netty及I/O模型
Netty学习记录 Netty简介 Netty特征 Netty架构结构图 Netty如今使用的场景 IO了解 BIO: BIO演变的NIO的过程 NIO: NIO三大核心(重点) NIO非阻塞网络编程 ...
- ELK搜索学习笔记--Day1
ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...
- [学习记录] macOS下的Nginx安装 Nginx基本知识
[学习记录] macOS下的Nginx安装 && Nginx基本知识 一. 安装相关 1. 安装:直接通过brew安装即可 2. 启动: 3. 成功运行判断: 4. 改端口号:由于80 ...
最新文章
- TensorFlow Frontend前端
- 2018冬令营模拟测试赛(十八)
- linux socket 缓冲区默认大小
- 陈桥五笔用户编号获取_用户群组分析
- 【错误记录】Google Play 上架报错 ( 此版本不符合 Google Play 关于提供 64 位版本应用的要求 )
- boost::stl_interfaces模块实现节点迭代器的测试程序
- sql基线建立-知识准备
- python find函数 和index的区别_find方法和index方法的区别
- poj 2031Building a Space Station(几何判断+Kruskal最小生成树)
- jmeter提取mysql返回值_jmeter连接数据库和提取数据库返回值
- cp命令显示进度条_干货|| Linux常用命令大全
- 不要束缚:为什么我们会错过GitHub条纹
- JavaScript--我所理解的原型链
- orm2 中文文档 7. 创建和更新记录
- mysql 存储引擎_MySQL存储引擎
- hdu 1856 并查集 求最大的子树含有元素的个数
- 改变一个ppt所有的幻灯片的背景色和字体颜色
- CentOS修改时间和时区
- 【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置
- 邱昭良:“碎片化”学习真是“一场骗局”吗?
热门文章
- EventProcessor与WorkPool用法--可处理多消费者
- 《深入理解Android:卷III A》一一2.4本章小结
- 阿尔法狗要逆天!韩专家称其故意输李世石一局
- 语音增强原理之噪声估计
- jQuery图片轮播(焦点图)插件(转载)
- Oracle cursor_sharing 参数 详解
- 电话无人应答转总机的配置方法
- 栈和队列应用之数制转换
- 在secureCRT软件上运行一些简单的python脚本
- c语言程序报告英汉词典,C语言电子英汉词典程序设计报告-自动化1203-李煜明.docx...