from multiprocessing.managers import BaseManager
import time,random,queue
from multiprocessing import freeze_support
task_queue=queue.Queue()
result_queue=queue.Queue()
class QUEUE(BaseManager):
pass
def return_task_queue():
global task_queue
return task_queue
def return_result_queue():
global result_queue
return result_queue
def test():
QUEUE.register('get_task_queue', callable=return_task_queue)
QUEUE.register('get_result_queue', callable=return_result_queue)
manager=QUEUE(address=('127.0.0.1',1008), authkey=b'abc')
manager.start()
task=manager.get_task_queue()
result=manager.get_result_queue()
for i in range(10):
n=random.randint(1,100)
print('put task %d'%n)
task.put(n)
print('try get result')
for i in range(10):
r=result.get(timeout=10)
print('result:%s'%r)
manager.shutdown()
print('master exit')
if name == 'main':
freeze_support()
test()
import sys
QUEUE.register('get_task_queue')
QUEUE.register('get_result_queue')
server='127.0.0.1'
print('connect to server:%s'%server)
m=QUEUE(address=(server,1008),authkey=b'abc')
m.connect()
task1=m.get_task_queue()
result1=m.get_result_queue()
for i in range(10):
n=task1.get(timeout=1)
print('run task %d%d'%(n,n))
r='%d%d=%d'%(n,n,n*n)
time.sleep(1)
result1.put(r)
print('worker exit')
庞小震77
-- coding: utf-8 --
from multiprocessing.managers import BaseManager import time,random,queue from multiprocessing import freeze_support
task_queue=queue.Queue() result_queue=queue.Queue() class QUEUE(BaseManager): pass def return_task_queue(): global task_queue return task_queue def return_result_queue(): global result_queue return result_queue def test(): QUEUE.register('get_task_queue', callable=return_task_queue) QUEUE.register('get_result_queue', callable=return_result_queue) manager=QUEUE(address=('127.0.0.1',1008), authkey=b'abc') manager.start() task=manager.get_task_queue() result=manager.get_result_queue()
if name == 'main': freeze_support() test()
import sys QUEUE.register('get_task_queue') QUEUE.register('get_result_queue') server='127.0.0.1' print('connect to server:%s'%server) m=QUEUE(address=(server,1008),authkey=b'abc') m.connect() task1=m.get_task_queue() result1=m.get_result_queue() for i in range(10): n=task1.get(timeout=1) print('run task %d%d'%(n,n)) r='%d%d=%d'%(n,n,n*n) time.sleep(1) result1.put(r) print('worker exit')