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 [ ] 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://packages.python.org/Jug/tutorial.html