python的分布式任务并行处理框架Jug简单使用
前言:
大家是否需要一个强度大点的任务处理框架,比如临时发送大量的通知邮件,需要做大量的cpu计算,需要做大量的部署,需要做xxxx。 好嘞,下面看看jug的介绍及使用文档。
介绍一个简单易用的任务处理框架,名字叫Jug,它是一个基于任务的并行处理框架,采用 Python 编写,可立马实现多任务处理,及在不同的机器上运行同一个任务,使用 NFS 做文件系统的通讯;也可在使用同一台服务器的多CPU运行同一任务。这里不仅可以用nfs,也可以用redis。
个人觉得他比celery相比,在于接口不好用。用celery可以轻易做成异步,当然jug的优势在于轻易的分布式,和派生多进程,以及任务不会冲突。当然这些东西也可以自己开发实现。 看个人喜好了。
我这里的测试代码很简单,就是获取一个列表,然后用jug运行,大家会注意到,你不管开了多少个进程,他们的任务都不会冲突,有点类似redis队列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#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 |
在第一台服务器处理的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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 |
再另一台服务器测试的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
xiaorui.cc 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的方式写入记录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
总用量 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
本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1405532,如需转载请自行联系原作者