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()

猜你喜欢

转载自blog.csdn.net/m0_37605956/article/details/83589366
今日推荐