- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的问题是关于 multiprocessing.Managers.BaseManager 的正确用法.文档中的主要示例展示了如何通过创建 BaseManager 的子类来自定义此类。如果有人这样做是为了修改或扩展 BaseManager 的行为,我可以理解。
但在网络上,甚至在 answer 中在 Stackoverflow 上,人们通过创建一个根本不改变 BaseManager 行为的子类来演示 BaseManager 的用法:
class MyManager(BaseManager): pass
我的问题是:在这种情况下这样做有什么意义?为什么不直接使用 BaseManager 和 BaseManager.register() 呢?我错过了什么吗?
最佳答案
BaseManager.register
是一个 classmethod .这意味着如果您在 BaseManager
实例上调用 register,您项目中的所有其他代码片段也将看到已注册的类型。如果其他代码片段之一试图做同样的事情,即使用与您相同的名称直接向 BaseManager
注册它们自己的类型,这就会成为一个问题。子类化 BaseManager
是避免这种情况的一种方法 namespace pollution .
如果您确定这个问题永远不会影响您 - 例如,如果您正在编写程序而不是库,并且您非常确定以后不会以某种方式扩展它这可能会破坏事情 - 然后使用 BaseManager.register
绝对没问题。 (请注意,尽管这种观点值得商榷。我认为这很好,因为我更喜欢务实的方法。另一种观点是,在当你最终想要扩展你的程序时,你可能已经忘记了这个东西会坏,因此最好一开始就把它弄好..)
关于python - 为什么在简单用例中子类化 multiprocessing 的 BaseManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41084929/
我的问题是关于 multiprocessing.Managers.BaseManager 的正确用法.文档中的主要示例展示了如何通过创建 BaseManager 的子类来自定义此类。如果有人这样做是为
我正在使用 Python 多处理库提供的远程管理器。我使用 BaseManager 设置了一个远程服务器,多个客户端同时连接到该服务器。不幸的是,我的服务器正在按顺序为每个客户端提供请求。我的服务器应
我在 Python 3.6 中针对进程间通信进行了以下设置: from multiprocessing.managers import BaseManager class MyManager(Base
使用 Python 2.7, 我使用派生自 multiprocessing.managers 的管理器跨进程传递许多大对象。 BaseManager 并且我想使用 cPickle 作为序列化程序以节省
在上个月,当我们尝试使用 Python 2.6.x 多处理包在几台不同的 (linux) 计算机之间共享队列时,我们遇到了一个长期存在的问题。我也直接向 Jesse Noller 提出了这个问题,因为
Python 3.8 引入了新的共享内存功能。我们正在尝试使用 SharedMemoryManager 并抛出 NameError。 我认为我们可能在复杂的场景中做错了什么,所以我使用 python
我是一名优秀的程序员,十分优秀!