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,如需转载请自行联系原作者

相关文章
|
8天前
|
存储 人工智能 PyTorch
基于PyTorch/XLA的高效分布式训练框架
基于PyTorch/XLA的高效分布式训练框架
19 2
|
25天前
|
人工智能 算法 PyTorch
TorchAcc:基于 TorchXLA 的分布式训练框架
阿里云研究员、阿里云人工智能平台 PAI 技术负责人--林伟在GTC 2024 大会 China AI Day 线上中文演讲专场上介绍了TorchAcc,这是一个基于 PyTorch/XLA 的大模型分布式训练框架。
|
21天前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
181 0
|
1月前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
|
7天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
10天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
1月前
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
165 0
|
29天前
|
数据采集 数据挖掘 调度
异步爬虫实践攻略:利用Python Aiohttp框架实现高效数据抓取
本文介绍了如何使用Python的Aiohttp框架构建异步爬虫,以提升数据抓取效率。异步爬虫利用异步IO和协程技术,在等待响应时执行其他任务,提高效率。Aiohttp是一个高效的异步HTTP客户端/服务器框架,适合构建此类爬虫。文中还展示了如何通过代理访问HTTPS网页的示例代码,并以爬取微信公众号文章为例,说明了实际应用中的步骤。
|
4天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
6天前
|
关系型数据库 数据库 开发者
Python中的Peewee框架:轻量级ORM的优雅之旅
【4月更文挑战第13天】在Python的众多ORM框架中,Peewee以其轻量级、简洁和易于上手的特点,受到了许多开发者的青睐。Peewee的设计理念是“小而美”,它提供了基本的ORM功能,同时保持了代码的清晰和高效。本文将深入探讨Peewee的核心概念、使用场景以及实战应用,帮助读者更好地理解和使用这一框架。

热门文章

最新文章