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)
- 文件存储
- 字典存储
- redis存储
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