Python编程:managers模块分布式进程

简介: Python编程:managers模块分布式进程

managers模块可以把多进程分布到多台机器上


依靠网络通信,一个服务进程可以作为调度者,将任务分布到其他多个进程中

image.png



代码示例

# -*- coding: utf-8 -*-
# @File    : task_master.py
# @Date    : 2018-06-11
# @Author  : Peng Shiyu
# 思路:通过managers模块把Queue通过网络暴露出去,就可以让其他机器的进程访问Queue了
import time
from queue import Queue
from multiprocessing.managers import BaseManager
# 发送任务的队列
task_queue = Queue()
# 接收结果的队列
result_queue = Queue()
# 从BaseManager继承的QueueManager
class QueueManager(BaseManager):
    pass
# 把两个Queue都注册到网络上, callable参数关联了Queue对象
QueueManager.register("get_task_queue", callable=lambda: task_queue)
QueueManager.register("get_result_queue", callable=lambda: result_queue)
# 绑定端口5002, 设置验证码'abc'
manager = QueueManager(address=("localhost", 5002), authkey=b"abc")
manager.start()
print("启动服务...")
# 获得通过网络访问的Queue对象,
# 必须通过manager获得的Queue接口添加
task = manager.get_task_queue()
result = manager.get_result_queue()
print("放入队列")
for i in range(10):
    time.sleep(1)
    task.put(i)
print("取出结果")
for i in range(10):
    print(result.get(timeout=10))
# 关闭
manager.shutdown()
"""
启动服务...
放入队列
取出结果
0
1
4
9
16
25
36
49
64
81
"""
# -*- coding: utf-8 -*-
# @File    : task_worker.py
# @Date    : 2018-06-11
# @Author  : Peng Shiyu
import time
from multiprocessing.managers import BaseManager
# 创建类似的QueueManager
class QueueManager(BaseManager):
    pass
# 由于这个QueueManager只从网络上获取Queue,所以注册时只提供名字
QueueManager.register("get_task_queue")
QueueManager.register("get_result_queue")
# 连接到服务器,也就是运行task_master.py的机器
# 端口和验证码注意保持与task_master.py设置的完全一致
manager = QueueManager(address=("localhost", 5002), authkey=b"abc")
# 从网络连接
manager.connect()
# 获取Queue的对象
task = manager.get_task_queue()
result = manager.get_result_queue()
# 从task队列取任务,并把结果写入result队列
for i in range(10):
    n = task.get(timeout=1)
    print("获取任务:%s"% n)
    time.sleep(2)
    result.put(n*n)
if hasattr(manager, "shutdown"):
    manager.shutdown()
"""
task_worker-1
获取任务:0
获取任务:2
获取任务:4
获取任务:6
获取任务:8
task_worker-2
获取任务:1
获取任务:3
获取任务:5
获取任务:7
获取任务:9
"""

相关文章
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
21天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
105 80
|
2天前
|
分布式计算 DataWorks 大数据
分布式Python计算服务MaxFrame测评
一文带你入门分布式Python计算服务MaxFrame
45 22
分布式Python计算服务MaxFrame测评
|
10天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
30 14
|
2天前
|
分布式计算 数据处理 MaxCompute
云产品评测|分布式Python计算服务MaxFrame
云产品评测|分布式Python计算服务MaxFrame
20 2
|
6天前
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。
|
21天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
89 13
|
18天前
|
人工智能 分布式计算 数据处理
云产品评测:MaxFrame — 分布式Python计算服务的最佳实践与体验
阿里云推出的MaxFrame是一款高性能分布式计算平台,专为大规模数据处理和AI应用设计。它提供了强大的Python编程接口,支持分布式Pandas操作,显著提升数据处理速度(3-5倍)。MaxFrame在大语言模型数据处理中表现出色,具备高效内存管理和任务调度能力。然而,在开通流程、API文档及功能集成度方面仍有改进空间。总体而言,MaxFrame在易用性和计算效率上具有明显优势,但在开放性和社区支持方面有待加强。
45 9
|
20天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
57 2