Discuss / Python / 分享对这节的心得

分享对这节的心得

Topic source

Champhy_Who

#1 Created at ... [Delete] [Delete and Lock User]

BaseManager.register是一个类方法, 它可以将某种类型或者可调用的对象(假设为A)绑定到manager 对象并共享到网络中, 本例中A被命名为了get_task_queue ,get_result_queue 使得其他在网络中的计算机能够获取相应的对象 我在服务器端的manager对象 假设为Mserver 我在客户端的manager对象 假设为Mworker 本例中被分别命名为managers ,m 由于A可以被调用,那么 managers.A(),返回值就是匿名函数的return,也就是queue.Queue() queue.Queue()是进程内非阻塞队列,多进程各自私有,无法通信 在本例中运用了manager对象,作为媒介,实现了进程间的通信

还有同学问为什么,要用子类QueueManager来实现。 其实不管是创建线程还是进程,都有三种方法

一:创建实例,传入一个函数
二:创建实例,传入一个可调用的类实例
三:派生子类,并创建子类的实例

我们一般选择方法三,这是更加面向对象的做法。 比如可以把整个脚本作为模块,导入另一个脚本。并直接调用类的属性和方法。

###另外关于线程的知识,我觉得Python核心编程(第3版)讲的很透彻


  • 1

Reply