#分布式程序
#分布式程序六個步驟:
#1.建立佇列queue,用來程序間的通訊。
#2.將佇列queue進行網路共享給其他程序
#3.建立物件例項,繫結埠和驗證口令
#4.啟動物件例項進行資訊傳輸管理
#5.通過物件例項將網路佇列本地化
#6.分配本地化佇列進行程序任務處理
# 排程服務程序taskmanager.py
import random,time,queue
from multiprocessing.managers import basemanager
#第一步,建立task_queue和result_queue,用來存放任務和結果
task_queue = queue.queue(
)result_queue = queue.queue(
)class
queuemanager
(basemanager)
:pass
#第二步,把建立的兩個佇列註冊到網路,利用register方法,callable引數關聯了queue物件
#將queue物件在網路上暴露
queuemanager.register(
'get_task_queue'
,callable
=lambda
:task_queue)
queuemanager.register(
'get_result_queue'
,callable
=lambda
:result_queue)
#第三步,繫結埠8001,設定驗證口令『qiye』相當於物件的初始化
manager = queuemanager(address=(''
,8001
),authkey=
'qiye'
)#第四步,啟動管理,監聽資訊通道
manager.start(
)#第五步,通過管理例項的方法獲得通過網路訪問的queue物件
task = manager.get_task_queue(
)result = manager.get_result_queue(
)#第六步,新增任務
for url in
['imagerurl'
+i for i in
range(10
)]:print
('put task %s...'url)
task.put(url)
#獲取返回結果
print
('try get result...'
)for i in
range(10
):print
('result is %s'
%result.get(timeout=10)
)#關閉管理
manager.shutdown(
)
#任務程序taskworker.py
import time
from multiprocessing.managers import basemanager
#建立類似的queuemanager
calss queuemanager(basemanager)
:pass
#第一步,使用queuemanager註冊用於獲取queue的放法名稱
queuemanager.register(
'get_task_queue'
)queuemanager.resgister(
'get_result_queue'
)#第二步,連線到伺服器
server_addr =
'127.0.0.1'
print
('connect to server %s...'
%server_addr)
#埠和驗證口令注意和服務程序保持一致
m = queuemanager(address=
(server_addr,
8001
),authkey=
'qiye'
)#鏈結網路
m.conncet(
)#第三步,獲取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)
#關閉處理
分布式程序
分布式程序指的是將process程序分布的多台機器上,充分利用多台機器的效能完成複雜的任務,我們可以將這點應用的分布式爬蟲的開發中。我們舉個簡單例子,服務程序用來設定任務在task queue,並設定介面。任務程序呼叫相同的介面,執行任務,結果寫進result queue taskmanager.p...
python 分布式程序
process可以分布到多台機器上,而thread最多只能分布到同一臺機器的多個cpu上。python的multiprocessing模組不但支援多程序,其中managers子模組還支援把多程序分布到多台機器上。乙個服務程序可以作為排程者,將任務分布到其他多個程序中,依靠網路通訊。由於manager...
Python 分布式程序
分布式程序是將process程序分布到多台伺服器中,利用多台機器的效能完成複雜的任務。可以應用到分布式爬蟲的開發中。分布式程序在python中依然要用到multiprocess模組。它不但支援多程序,其中managers子模組還支援吧多程序分不到多台機器上,可以寫乙個服務程序作為排程者,將任務分不到...