Jug 并行处理框架

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

posted @ 2011-09-19 20:54  残夜  阅读(762)  评论(0编辑  收藏  举报