1. 程式人生 > >簡單搭建分散式計算

簡單搭建分散式計算

#主機控制程式碼
import multiprocessing
import multiprocessing.managers
import random,time
from multiprocessing import Queue

任務佇列

task_queue=Queue()

結果佇列

result_queue=Queue()

提供給從機呼叫後得到佇列中的資料

就是介面

def return_task():
return task_queue
def return_result():
return result_queue
class QueueManager(multiprocessing.managers.BaseManager):
pass
if name

==“main”:
# 開啟分散式支援
multiprocessing.freeze_support()
# 註冊可以訪問佇列並得到結果的函式
QueueManager.register(‘get_task’,callable=return_task)
QueueManager.register(‘get_result’,callable=return_result)
manager=QueueManager(address=(‘192.168.72.135’,8888),authkey=‘password’.encode(‘utf-8’))
manager.start()
task=manager.get_task()
result=manager.get_result()
for i in range(1000):
print(‘task add data’)
#將任務放入佇列
task.put(i)
print(‘watting for ____’)
for i in range(1000):
#將結果從佇列中取出
res=result.get()
print(‘get_data’,res)
manager.shutdown()
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
×××××××××××××××××××××
import multiprocessing
import multiprocessing.managers
import random,time
from multiprocessing import Queue

class QueueManager(multiprocessing.managers.BaseManager):
pass
if name==“main”:
# 開啟分散式支援
multiprocessing.freeze_support()
# 註冊可以訪問佇列並得到結果的函式
QueueManager.register(‘get_task’)
QueueManager.register(‘get_result’)
manager=QueueManager(address=(‘192.168.72.135’,8888),authkey=‘password’.encode(‘utf-8’))
manager.connect()
task=manager.get_task()
result=manager.get_result()
for i in range(1000):
try:
#從佇列中取出任務
data=task.get()
print(‘client_get’,data)
#處理計算任務將結果放入佇列中 result.put(‘client’+str((data+10)))
except:
pass