python实现分布式应用开发_python爬虫开发之一:分布式进程

分布式进程指的是将Process进程分布到多台机器上,充分利用多台机器的性能完成复杂的任务。我们可以将这一点应用到分布式爬虫的开发中。

比如:在做爬虫程序时,常常会遇到这样的场景,我们想抓取某个网站的所有图片,如果是引用多进程的话,一般是一个进程负责抓取图片的链接地址,将链接地址存放到Queue中,另外的进程负责从Queue中读取链接地址进行下载和存储到本地。现在我们用这个分布式进程来做的话,一台机器上的进程负责抓取链接,其他机器上的进程负责下载存储。

j_0001.gif

一.服务进程,分为6个步骤:# -*- coding:utf-8 -*-

import Queuefrom multiprocessing.managers import BaseManager

from multiprocessing

import freeze_support

import timeimport random

# 任务个数

task_number = 10

# 定义收发队列

# 第一步:建立task_queue和result_queue,用来存放任务和结果

task_queue = Queue.Queue(task_number)

result_queue = Queue.Queue(task_number

)# win下不支持lambda,所以定义方法,linux下可以直接用lambda(下面已给出)

def get_task():

return task_queuedef

get_result():

return result_queue

# 创建类似的QueueManager

class QueueManager(BaseManager):

pass

def win_run():

# linux下可以直接用lambda

#QueueManager.register('get_task_queue',callable=lambda:task_queue)

# 第二步:创建2个队列注册在网络上

QueueManager.register('get_task_queue',callable=get_task)

QueueManager.register('get_result_queue',callable=get_result)

# 第三步:绑定端口,设置验证口令

manager = QueueManager(address=('127.0.0.1',8001),authkey = 'keke')

# 第四步:启动管理,监听信息通道

manager.start()

# 第五步:通过管理实例的方法获得通过网络访问的Queue对象

task = manager.get_task_queue()

result = manager.get_result_queue()

# 第六步:添加任务

# 接受任务

while 1:

task.put(random.randint(100,999))

time.sleep(4)

print result.get()

manager.shutdown()

if __name__ == '__main__':

# win下调用freeze_support,linux可以不用

freeze_support()

win_run()

二.任务进程,分为4个步骤:# -*- coding:utf-8 -*-

import time

import random

from multiprocessing.managers import BaseManager

class QueueManager(BaseManager):

pass

# 第一步:使用QueueManager注册用于获取Queue的方法名称

QueueManager.register('get_task_queue')

QueueManager.register('get_result_queue')

# 第二步:链接到服务器

m = QueueManager(address=('127.0.0.1',8001), authkey='keke')

m.connect()

# 第三步:获取Queue对象

task = m.get_task_queue()

result = m.get_result_queue()

# 第四步:从task队列中获取任务,并把结果返回到result队列中

while 1:

time.sleep(2)

print task.get(), 11111111

result.put(random.randint(1,10))

效果图如下:

1%20%282%29.png

1.png

本内容参考:范伟辉编著的《Python爬虫开发与项目实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值