1. 程式人生 > >python分散式學習記錄

python分散式學習記錄

根據網上資料學習了python分散式程序,大體使用方法總結,以及注意點如下:

首先是master部分:

  1. 繼承multiprocessing模組的managers子模組中的BaseManager, 如類名為QueueManager
    from multiprocessing.managers import BaseManager
    class QueueManager(BaseManager):
    pass

  2. master中建立queue,並且提供函式獲取queue
    task_queue = queue.Queue()
    def func():
    global task_queue
    return task_queue

  3. 使用QueueManager將Queue註冊到網上使用QueueManager將Queue註冊到網上
    需要注意的是, 註冊時使用lambda會報錯,需按下面呼叫:
    QueueManager.register(‘get_task_queue’, callable=func)意思是把func的功能在網路上通過get_task_queue來呼叫

  4. manager = QueueManager(address=(‘127.0.0.1’, 5000), authkey=b’abc’)
    manager.start()
    task_queue = manager.get_task_queue()
    注意這裡一定要填寫地址,否則執行fail

  5. 需要注意的是manager的這些操作需要在主函式中執行,所以程式碼要放在main下面:
    from multiprocessing import freeze_support
    if _ name_ == ‘_main _’:
    freeze_support()

Worker部分:
和master部分很像,但不需一定在main中執行。
6. 構建QueueManager
class QueueManager(BaseManager):
pass
7. 註冊介面
QueueManager.register(‘get_task_queue’)
8. 構造QueManager例項
manager=QueueManager(address=(‘127.0.0.1’, 5000), authkey=b’abc’)
如果是其他機器執行worker,地址要更換為master所在機器ip地址
9. manager.connect()
10. 取得queue通過manager
task = manager.get_task_queue()