快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

python3爬虫中分布式指的是什么

这篇文章主要介绍了python3爬虫中分布式指的是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

创新互联公司主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务璧山,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

服务进程

我们先来看服务进程,服务进程主要工作:

l 服务进程负责启动Queue

l 把Queue注册到网络上

l 往Queue里面写入任务

我们用代码来看实际效果:

import queue
from multiprocessing.managers import BaseManager
# 创建task_queue和result_queue对了用来存放任务和结果
task_queue = queue.Queue()
result_queue = queue.Queue()
class QueueManager(BaseManager):
 """
 继承BaseManager
 """
 pass
# 把创建的两个队列注册到网络上,利用register方法,callable参数关联对象
# 注意windows下绑定调用接口不能使用lambda
QueueManager.register('get_task_queue', callable=lambda: task_queue)
QueueManager.register('get_result_queue', callable=lambda: result_queue)
# 绑定5000端口, 设置密钥
manager = QueueManager(address=('', 5000), authkey=b'abc')
# 启动queue,监听通道
manager.start()
# 获得通过网络访问的对象,注意分布式进程必须通过manager.get_task_queue()获得的Queue接口添加
task = manager.get_task_queue()
result = manager.get_result_queue()
# 添加任务
for url in ['url_' + str(i) for i in range(10)]:
 print('put task %s...' % url)
 task.put(url)
# 获取返回结果
for i in range(10):
 print('result is %s' % result.get(timeout=10))
# 关闭管理
manager.shutdown()
print('master exit')

任务进程

任务进程主要的工作如下:

l 注册获取网络上queue

l 连接服务器

l 从task队列获取任务,并写入结果

示例代码如下:

import time
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager):
 """
 继承类BaseManager
 """
 pass
# 使用register注册,获取网络queue名称
QueueManager.register('get_task_queue')
QueueManager.register('get_result_queue')
# 配置服务器ip并连接服务器
server_addr = '127.0.0.1'
print('connect to server %s...' % server_addr)
m = QueueManager(address=(server_addr, 5000), authkey=b'abc')
# 从网络连接
m.connect()
# 获取queue对象
task = m.get_task_queue()
result = m.get_result_queue()
# 从task获取任务并将结果写入result
while(not task.empty()):
 image_url = task.get(True, timeout=5)
 print('run task download %s...' % image_url)
 time.sleep(1)
 result.put('%s ------>success' % image_url)
print('worker exit')

感谢你能够认真阅读完这篇文章,希望小编分享python3爬虫中分布式指的是什么内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!


分享名称:python3爬虫中分布式指的是什么
路径分享:http://6mz.cn/article/gddceh.html

其他资讯