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
[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


再另一台服务器测试的结果:


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
[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的方式写入记录。

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
[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

wKiom1NjW26wjq6cAAPS6y_yajU533.jpg



里介绍的比较简单,想看详细的,请到官网看:


https://pythonhosted.org/Jug/tutorial.html






 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1405532,如需转载请自行联系原作者

相关文章
|
2天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
10天前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
50 1
|
15天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
17天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
43 5
|
18天前
|
机器学习/深度学习 PyTorch 算法框架/工具
python这些库和框架哪个更好
【9月更文挑战第2天】python这些库和框架哪个更好
32 6
|
18天前
|
机器学习/深度学习 数据采集 算法框架/工具
python有哪些常用的库和框架
【9月更文挑战第2天】python有哪些常用的库和框架
21 6
|
22天前
|
SQL 数据挖掘 API
ibis:极具潜力的Python数据分析新框架
ibis:极具潜力的Python数据分析新框架
|
20天前
|
测试技术 API 开发者
Python 魔法:打造你的第一个天气查询小工具自动化测试框架的构建与实践
【8月更文挑战第31天】在这篇文章中,我们将一起踏上编程的奇妙旅程。想象一下,只需几行代码,就能让计算机告诉你明天是否要带伞。是的,你没有听错,我们将用Python这把钥匙,解锁天气预报的秘密。不论你是编程新手还是想拓展技能的老手,这篇文章都会为你带来新的视角和灵感。所以,拿起你的键盘,让我们一起创造属于自己的天气小工具吧!
|
20天前
|
Web App开发 XML 测试技术
自动化测试框架设计:以Python和Selenium为例
【8月更文挑战第31天】在软件开发的快节奏中,自动化测试成为确保产品质量的关键步骤。本文将引导读者了解如何结合Python语言和Selenium工具来设计一个高效的自动化测试框架。通过浅显易懂的语言和实际代码示例,我们将探索自动化测试框架的核心组件,并学习如何实现它们。无论你是测试新手还是希望提升自动化技能的开发者,这篇文章都将为你打开一扇通向高效软件测试的大门。
|
22天前
|
开发框架 Java 数据管理
我使用Python开发网站的3个主要框架库,强烈推荐
我使用Python开发网站的3个主要框架库,强烈推荐