日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

geyser学习记录(day1):将任务拆分的架构

發(fā)布時間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 geyser学习记录(day1):将任务拆分的架构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所有的內(nèi)容都是對這個文檔所說的任務(wù)分解架構(gòu)的理解:
geyser的文檔:geyser

0.一個核心思想

我們在學(xué)習(xí)這個框架的時候首先我們得知道這個東西是用來干什么的?設(shè)計思想是什么?

這個框架的主要設(shè)計思想就是將一個個任務(wù)進行拆分,之后通過一個配置文件直接控制全部的程序執(zhí)行,這樣的好處就是我們一旦將代碼寫完之后,我們進行baseline或是消融實驗的時候,我們都不再需要修改代碼了,只需要簡單的修改配置文件就可以了。

核心思想在我理解看來就是:通過調(diào)整一個配置文件可以控制整個程序的執(zhí)行過程,甚至各個模塊之間的執(zhí)行順序。并且和原來的代碼比起來,我們只需要在原來的代碼的各個模塊上加入裝飾器,編寫一個配置文檔,開銷很低。

1.怎么標識一個資源

1.1使用一個標識來標記一個類的重要性

這個框架當中我們既然要把一個整個的程序拆分成一個個代碼塊,所以我們就需要解決這些代碼塊之間的參數(shù)傳遞的問題,顯然我們不能使用變量名進行傳遞了,因為這個東西只在一小部分范圍當中產(chǎn)生效果(在當前這個py文件當中我們可能可以找到,出了這個py文件我們就不能通過變量名找到了)。這就需要我們通過class的唯一標識符來尋找到一個個內(nèi)容。(這個標識在一個項目當中是唯一的)

1.2這個標識符怎么獲得

我們只需要右擊這個類名,進行點擊就可以獲得了。

1.3我們只是解決了找到這個東西,那么怎么用?

這就需要我們使用到geyser.utility當中兩個小工具:

  • reference:我們幫助我們使用類名找到標識
  • reflect:我們通過類的標識找到這個類

2.幾個主要的概念

2.1Task

Task是任務(wù)流模型的基本單元,定義了基本的任務(wù)行為。你可以繼承Task來定義你的任務(wù),并通過Geyser.task來注冊你的任務(wù)。

Task這里你交給系統(tǒng)一件他需要完成的任務(wù)。
你只需要告訴系統(tǒng)(這都需要使用上面的reference):

  • 他完成這個任務(wù)可以提供什么依賴;
  • 他完成這個任務(wù)需要什么依賴;
  • 他完成這個任務(wù)的恢復(fù)需要什么依賴。

這三個你需要按照框架規(guī)定的方式進行傳入即可

額外說明這個恢復(fù)

額外說一下這個恢復(fù)的情況,就是如果我們這個task發(fā)生了什么意外

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']# ^ 注意這里的逗號!

可以看到我們在進行注冊時候只需要加入一個裝飾器,這個裝飾器的參數(shù)就是上面提到的三個參數(shù):

為了搞明白這個東西我們需要從兩方面理解這個內(nèi)容:
首先是什么是Task?
如果你繼承自這個Task這個類,那么你就需要定義一個excuse函數(shù),這個函數(shù)就是在這個任務(wù)當中需要完成的任務(wù)。
之后是這些參數(shù)怎么傳入?

  • 1.這個provides是這個任務(wù)完成之后提供什么內(nèi)容:
    就是這個任務(wù)提供什么內(nèi)容,這個東西可以給你返回內(nèi)容逐個對應(yīng)的命名。這樣下面的內(nèi)容就可以在provides當中直接使用這些名來進行傳入。

  • 2.這個requires是完成這個任務(wù)需要什么內(nèi)容:
    這些requires的內(nèi)容會被架構(gòu),直接傳入到excuse函數(shù)的參數(shù)當中,這樣就能順利完成參數(shù)的傳入傳出。

  • 3.這個revert_requirse就是我們在任務(wù)執(zhí)行失敗之后進行恢復(fù)需要什么內(nèi)容:
    這個東西我們很少使用。

總結(jié)

以上是生活随笔為你收集整理的geyser学习记录(day1):将任务拆分的架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。