Jug 是一個基於任務的平行處理架構,採用 Python 編寫,可用來在不同的機器上運行同一個任務,使用 NFS 做檔案系統的通訊;也可在使用同一台伺服器的多CPU運行同一任務。
Jug工作原理:
//Todo//
Jug使用小結:
1.使用Jug execute jugfile.py啟動並行一個進程,實際上執行如下:
$python /usr/loca/python/bin/jug execute jugfile.py
2.使用jug status jugfile.py查看並行進程的狀態,如:
運行結束時的並行狀態如下:
Task之間可以存在依賴關係,只能是任務之間的依賴,任務的輸出結果,無法作為任務的輸入,只能把整個任務作為輸入。
document = jug.Task(f1,*args,**kwargs)
doc = jug.Task(f2, document, *args, **kwargs)
任務返回的結果可以通過jug.task.value/jug.value得到value(task/tasks)
TaskGenerator可以自動指定任務,@TaskGenerator ,Task需要額外的封裝代碼,
- 優點:可移植性強,可不依賴於jug運行
- 缺點:依賴關係不好控制,代碼不好維護
注意任務間的同步和非同步關係
jug.init/jug.jug.init可以動態載入jug任務模組,並得到任務返回結果
可在代碼中控制jug的初始化、載入和運行
jug.init("filedec.py", "dname")
輸入:jugfile的檔案名稱,jugdir的路徑 輸出:store object, jugspace
結果儲存方式支援:(基本原理:Key/Value)
Jug API參考
[ ] jug
[ ] jug.Task
[ ] jug.TaskGenerator
[ ] jug.value
[ ] jug.backends
[ ] jug.backends.dict_restore
[ ] jug.backends.decode
[ ] jug.backends.file_restore
[ ] jug.backends.redis_restore
[ ] jug.barrier
[ ] jug.compound
[ ] jug.compound.Task
[ ] jug.init
[*] jug.jug
[ ] jug.jug.check
[ ] jug.jug.execute
[ ] jug.jug.init
[ ] jug.jug.invalidate
[ ] jug.mapreduce
[ ] jug.mapreduce.map
[ ] jug.mapreduce.mapreduce
[ ] jug.mapreduce._break_up
[ ] jug.task
[ ] jug.task.CachedFuntion
[ ] jug.task.Task
[ ] jug.task.TaskGenerator
[ ] jug.task.alltasks
[ ] jug.task.topological_sort
[ ] jug.task.value
[ ] jug.utils
[ ] jug.utils.identity
[ ] jug.utils.timed_path
相關網站: http://nullege.com/codes/search/jug
http://packages.python.org/Jug/tutorial.html