標籤:python multiprocessing 分布式進程
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: Changhua Gong
import random, time, queue
from multiprocessing.managers import BaseManager
from queue import Queue
‘‘‘
worker進程:執行任務,反饋結果
這部分內容與官網教程,有些出入
‘‘‘
# 從BaseManager繼承QueueManager
class QueueManager(BaseManager):
pass
# 從網路上擷取對應的queue
QueueManager.register("get_queue_t")
QueueManager.register("get_queue_rs")
# 串連到伺服器,也就是運行task_master.py的機器:
server_ip = "127.0.0.1"
print("Connect to server...%s" % server_ip)
manager = QueueManager(address=(server_ip, 5000), authkey=b"love8013") # 保證連接埠和密匙一致
# 從網路連接
manager.connect()
# 獲得通過網路訪問的Queue對象
t = manager.get_queue_t()
rs = manager.get_queue_rs()
print("1")
# 從task隊列中讀取任務,並將結果寫會result隊列
for i in range(10):
try:
n = t.get(timeout=1)
print(‘run task %d * %d...‘ % (n, n))
r = ‘%d * %d = %d‘ % (n, n, n*n)
time.sleep(1)
rs.put(r)
except Queue.Empty:
print(‘task queue is empty.‘)
print(‘worker exit.‘)
Python 分布式進程Worker