任务进程需要四个步骤:
1 使用QueueManager注册用于获取Queue的方法名称,任务进程只能通过名称来在网络上获取Queue。
2 连接服务器,端口和验证口令必须与服务进程中的一致。
3 从网络上获取Queue,进行本地化
4 从task队列获取任务,并把结果写入result队列。
例子2:任务进程(taskWorker.py)
# coding=utf8import timefrom multiprocessing.managers import BaseManager
class QueueManager(BaseManager):
pass
# 使用QueueManager注册用于获取Queue的方法名称QueueManager.register('get_task_queue')
QueueManager.register('get_result_queue')
server_addr = '127.0.0.1'print('连接到服务器%s ...'%server_addr)
m = QueueManager(address=(server_addr,8001),authkey='kouling'.encode('utf-8'))# 连接服务器m.connect()
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('处理结束...')
结果:
先启动服务端程序
再启动任务端程序