python的分布式任务并行处理框架Jug简单使用
2014-05-02 17:05
1041 查看
前言:
大家是否需要一个强度大点的任务处理框架,比如临时发送大量的通知邮件,需要做大量的cpu计算,需要做大量的部署,需要做xxxx。 好嘞,下面看看jug的介绍及使用文档。
介绍一个简单易用的任务处理框架,名字叫Jug,它是一个基于任务的并行处理框架,采用 Python 编写,可立马实现多任务处理,及在不同的机器上运行同一个任务,使用 NFS 做文件系统的通讯;也可在使用同一台服务器的多CPU运行同一任务。这里不仅可以用nfs,也可以用redis。
个人觉得他比celery相比,在于接口不好用。用celery可以轻易做成异步,当然jug的优势在于轻易的分布式,和派生多进程,以及任务不会冲突。当然这些东西也可以自己开发实现。 看个人喜好了。
我这里的测试代码很简单,就是获取一个列表,然后用jug运行,大家会注意到,你不管开了多少个进程,他们的任务都不会冲突,有点类似redis队列。
在第一台服务器处理的结果:
再另一台服务器测试的结果:
可以看到,他们在完成任务后,会把记录hash的方式写入记录。
原文:http://rfyiamcool.blog.51cto.com/1030776/1405532
这里介绍的比较简单,想看详细的,请到官网看:
https://pythonhosted.org/Jug/tutorial.html
大家是否需要一个强度大点的任务处理框架,比如临时发送大量的通知邮件,需要做大量的cpu计算,需要做大量的部署,需要做xxxx。 好嘞,下面看看jug的介绍及使用文档。
介绍一个简单易用的任务处理框架,名字叫Jug,它是一个基于任务的并行处理框架,采用 Python 编写,可立马实现多任务处理,及在不同的机器上运行同一个任务,使用 NFS 做文件系统的通讯;也可在使用同一台服务器的多CPU运行同一任务。这里不仅可以用nfs,也可以用redis。
个人觉得他比celery相比,在于接口不好用。用celery可以轻易做成异步,当然jug的优势在于轻易的分布式,和派生多进程,以及任务不会冲突。当然这些东西也可以自己开发实现。 看个人喜好了。
我这里的测试代码很简单,就是获取一个列表,然后用jug运行,大家会注意到,你不管开了多少个进程,他们的任务都不会冲突,有点类似redis队列。
#coding:utf-8 #from xiaorui.cc from jug import TaskGenerator import time import os,sys @TaskGenerator def is_prime(n): print '现在进行的是任务: %s'%n time.sleep(1) ltime = int(time.time()) print ltime time.sleep(1) return True plist=[1,2,3,4,5,6,7,8,9,10,'w1','w2','w3','w4','w5','w6','d1','d2','d3','d4','d5','d6'] primes100 = map(is_prime,plist) print 'o
在第一台服务器处理的结果:
[root@67 var]# jug execute s.py ok 现在进行的是任务: 1 1399001613 现在进行的是任务: 2 1399001615 现在进行的是任务: 3 1399001617 现在进行的是任务: 4 1399001619 现在进行的是任务: 6 1399001621 现在进行的是任务: 8 1399001623 现在进行的是任务: 10 1399001625 现在进行的是任务: w2 1399001627 现在进行的是任务: w4 1399001629 现在进行的是任务: w6 1399001632 现在进行的是任务: d2 1399001634 现在进行的是任务: d4 1399001636 现在进行的是任务: d6
再另一台服务器测试的结果:
xiaorui.cc [root@110 var]# jug execute s.py ok 现在进行的是任务: 5 1399001620 现在进行的是任务: 7 1399001623 现在进行的是任务: 9 1399001625 现在进行的是任务: w1 1399001627 现在进行的是任务: w3 1399001629 现在进行的是任务: w5 1399001631 现在进行的是任务: d1 1399001633 现在进行的是任务: d3 1399001635 现在进行的是任务: d5 1399001637 Executed Loaded Task name -------------------------------------------------------------------------------------------------------------------------------------- 9 3 s.is_prime ...................................................................................................................................... 9 3 Total
可以看到,他们在完成任务后,会把记录hash的方式写入记录。
[root@67 var]# ll s.jugdata/ 总用量 96 drwxr-xr-x 2 root root 4096 5月 2 11:33 0b drwxr-xr-x 2 root root 4096 5月 2 11:33 12 drwxr-xr-x 2 root root 4096 5月 2 11:33 14 drwxr-xr-x 2 root root 4096 5月 2 11:33 1d drwxr-xr-x 2 root root 4096 5月 2 11:33 25 drwxr-xr-x 2 root root 4096 5月 2 11:33 4d drwxr-xr-x 2 root root 4096 5月 2 11:33 4f drwxr-xr-x 2 root root 4096 5月 2 11:33 58 drwxr-xr-x 2 root root 4096 5月 2 11:33 59 drwxr-xr-x 2 root root 4096 5月 2 11:33 6f drwxr-xr-x 2 root root 4096 5月 2 11:33 75 drwxr-xr-x 2 root root 4096 5月 2 11:33 79 drwxr-xr-x 2 root root 4096 5月 2 11:33 7c drwxr-xr-x 2 root root 4096 5月 2 11:33 8d drwxr-xr-x 2 root root 4096 5月 2 11:33 96 drwxr-xr-x 2 root root 4096 5月 2 11:33 a7 drwxr-xr-x 2 root root 4096 5月 2 11:33 a9 drwxr-xr-x 2 root root 4096 5月 2 11:33 b7 drwxr-xr-x 2 root root 4096 5月 2 11:33 be drwxr-xr-x 2 root root 4096 5月 2 11:33 d1 drwxr-xr-x 2 root root 4096 5月 2 11:33 d6 drwxr-xr-x 2 root root 4096 5月 2 11:33 f7 drwxr-xr-x 2 root root 4096 5月 2 11:33 locks drwxr-xr-x 2 root root 4096 5月 2 11:33 tempfiles
原文:http://rfyiamcool.blog.51cto.com/1030776/1405532
这里介绍的比较简单,想看详细的,请到官网看:
https://pythonhosted.org/Jug/tutorial.html
相关文章推荐
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 用map函数来完成Python并行任务的简单示例
- PHP 使用 QPM 实现多进程并行任务处理程序
- Java使用Fork/Join框架来并行执行任务
- Python来完成简单图像处理任务
- 使用Python Flask框架快速实现简单API
- Android中常见的图片处理框架的简单使用
- python简单程序使用signal模块处理僵死进程
- 分布式服务框架dubbo简单使用
- python处理Excel xlrd的简单使用
- Python图像处理库(PIL)的安装与简单使用
- 使用python的twisted框架编写一个简单的聊天室
- Python并行分布式框架Celery详解
- Python 并行分布式框架 Celery
- Python使用 Beanstalkd 做异步任务处理的方法
- Python定时任务APScheduler框架的使用
- 【C#】52. 使用Flatten方法处理并行任务抛出的异常
- quartz任务调度框架的简单使用
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- Python 并行分布式框架之 Celery