Python学习之多进程实例

这是学习Python教程中的一个实例

本文记录了该多进程实例的完整程序,希望其他人也可以学习到其中的知识,非常简单,有什么想法欢迎评论!

  • 该实例由两部分组成:
  • -任务分发端
  • -任务处理端

  • 测试时,先启动任务分发端,再启动任务处理端

  • 注意:本程序是在mac环境中测试运行的;在windows上运行会有问题,请注意!
  • 解决方法:需要参考网上其他人的解决方案:①lambda不支持,增加两个方法,返回队列②在if __name__ == “__main__”中引入freeze_support()

第一部分:任务分发端

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time    : 17/9/17 上午10:49
# @Author  : mylovin
# @File    : MultiProcess_Server.py
# @Software: PyCharm
# @说明     : 多进程实例----分发任务端

#导入必备头文件;
import multiprocessing
from multiprocessing.managers import BaseManager
import Queue#注意:python2.7中,Queue是大写;但是python3中是小写!

#继承BaseManager类
class QueueManager(BaseManager):
    pass

#创建任务队列和结果队列
get_task_queue = Queue.Queue()
get_result_queue = Queue.Queue()

#在网络上注册
QueueManager.register("get_task_queue", callable=lambda :get_task_queue)
QueueManager.register("get_result_queue", callable=lambda :get_result_queue)

#创建多进程管理员,需要指定地址和端口,用于主从之间连接,同时需要验证码进行验证
manager = QueueManager(address=("127.0.0.1", 5000), authkey=b"multiprocessing")

#启动
manager.start()

#获取任务队列和结果队列
task = manager.get_task_queue()
result = manager.get_result_queue()

for i in range(10):
    task.put(i)

for i in range(10):
    v = result.get(timeout=5)
    print(v)

#结束
manager.shutdown()

第二部分:任务处理端

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time    : 17/9/17 上午10:49
# @Author  : mylovin
# @File    : MultiProcess_Worker.py
# @Software: PyCharm
# @说明     : 多进程实例----执行任务端

import multiprocessing
import Queue
from multiprocessing.managers import BaseManager

class QueueManager(BaseManager):
    pass

QueueManager.register("get_task_queue")
QueueManager.register("get_result_queue")

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

manager.connect()

task = manager.get_task_queue()
result = manager.get_result_queue()

for i in range(10):
    value = task.get(timeout=2)
    result.put(value*value)

该实例比较简单,很多内容并没有详细分析,具体的大家可以去廖雪峰大神的网站上面去学习!
欢迎大家评论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值