前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 分布式进程Master

Python 分布式进程Master

作者头像
py3study
发布2020-01-15 17:39:54
4280
发布2020-01-15 17:39:54
举报
文章被收录于专栏:python3python3

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

import random, time, queue

from multiprocessing.managers import BaseManager

from multiprocessing import freeze_support

'''

master进程:调度进程,作用分配任务和接收结果

这部分内容与官网教程,有些出入

'''

# 发送任务的对列

queue_t = queue.Queue()

# 接收结果的对列

queue_rs = queue.Queue()

# 从BaseManager继承QueueManager

class QueueManager(BaseManager):

    pass

def return_queue_t():

    global queue_t

    return queue_t

def return_queue_r():

    global queue_rs

    return queue_rs

def master():

    # 把两个Queue都注册到网络上, callable参数关联了Queue对象:

    QueueManager.register("get_queue_t", callable=return_queue_t)

    QueueManager.register("get_queue_rs", callable=return_queue_r)

    # 绑定端口5000, 设置验证码love8013

    manager = QueueManager(address=("127.0.0.1", 5000), authkey=b"love8013")

    # 启动Queue

    manager.start()

    # 获得通过网络访问的Queue对象

    t = manager.get_queue_t()

    rs = manager.get_queue_rs()

    # 放几个任务进去,计算每个数的4次方

    for i in range(10):

        n = random.randint(0, 10000)

        print("Put %d into the task queue." % n)

        t.put(n)  # 把每个数放进任务队列中,放在队列中的是int

    # 从result队列读取结果

    print("Try to get results.")

    for i in range(10):

        r = rs.get(timeout=10)

        print("Result: %s" % r)

    # 关闭:

    manager.shutdown()

    print('master exit.')

if __name__ == "__main__":

    freeze_support()

    master()

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档