有三个问题可能重复(但太具体):

> How to properly set up multiprocessing proxy objects for objects that already exist
> Share object with process (multiprocess)
> Can I use a ProcessPoolExecutor from within a Future?

通过回答这个问题,可以回答其他三个问题.
希望我明确表示:

一旦在多处理创建的某个进程中创建了一个对象:

>如何将对该对象的引用传递给另一个进程?
>(不是那么重要)当我持有参考文件时,如何确保这个过程不会死机?

示例1(已解决)

from concurrent.futures import *

def f(v):
    return lambda: v * v

if __name__ == '__main__':
    with ThreadPoolExecutor(1) as e: # works with ThreadPoolExecutor
        l = list(e.map(f,[1,2,3,4]))
    print([g() for g in l]) # [1,4,9,16]

示例2

假设f返回具有可变状态的对象.这个相同的对象应该可以从其他进程访问.

实施例3

我有一个对象有一个打开的文件和一个锁 – 我如何授予访问其他进程?

提醒

我不希望这个具体错误不出现.或者解决这个具体的用途.该解决方案应该足够普遍,以便在进程之间共享不可移动的对象.可以在任何进程中创建对象.使所有对象可移动并保留身份的解决方案也可以很好.

欢迎任何提示,任何指向如何实现解决方案的部分解决方案或代码片段都值得一提.所以我们可以一起创建一个解决方案

这是尝试解决这个问题,但没有多重处理:https://github.com/niccokunzmann/pynet/blob/master/documentation/done/tools.rst

问题

What you want the other processes to do with the references?

引用可以传递给使用多重处理创建的任何其他进程(重复3).可以访问属性,调用引用.访问的attibutes可能是也可能不是代理.

What’s the problem with just using a proxy?

也许没有问题,但也是一个挑战.我的印象是,一个代理有一个经理,一个经理有自己的进程,所以不可序列化的对象必须被序列化和转移(部分用stacklessPython / fork解决).
还存在特殊对象的代理 – 为所有对象(可解决)构建代理是很难但并非不可能的.

解? – 代理经理?

Eric Urban表示序列化不是问题.真正的挑战在Example2& 3:状态的同步.我的解决方案的想法是为经理创建一个特殊的代理类.这个代理类

>为不可序列化的对象创建一个构件
>接受可序列化的对象并将其传输到管理器进程.
>(问题)根据1.不可序列化的对象必须在管理器进程中创建.

解决方法

大多数情况下,将现有对象的引用传递给另一个进程并不是真正需要的.相反,您创建要在进程之间共享的类:
class MySharedClass:
    # stuff...

那么你做一个这样的代理经理:

import multiprocessing.managers as m
class MyManager(m.BaseManager):
    pass # Pass is really enough. nothing needs to be done here.

然后,您在该管理器上注册您的课程,如下所示:

MyManager.register("MySharedClass",MySharedClass)

然后,一旦管理器被启动并启动,使用manager.start(),您可以使用manager.MySharedClass创建类的共享实例.这应该适用于所有需要.返回的代理与原始对象完全相同,除了documentation中描述的一些例外.

python – 多进程在进程之间共享不可序列化的对象的更多相关文章

  1. 吃透移动端 Html5 响应式布局

    这篇文章主要介绍了吃透移动端 Html5 响应式布局,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. 如何在iOS上快速将ALAsset映像保存到磁盘?

    我正在使用ALAsset来检索这样的图像:这返回CGImageRef,我想尽快保存到磁盘…解决方案1:解决方案2:问题是两种方法在设备上的执行速度都很慢.每张图片大约需要2秒才能执行此操作.这绝对是长久的.问题:如何加快图像保存过程?或许还有更好的解决方案吗?

  3. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  4. ios – 根据大小类更改约束的乘数

    根据当前的大小类,可以给出一个不同乘数的约束吗?我有一个看法,我想要的是一般尺寸类宽度的一半的屏幕尺寸,我希望它是一个紧凑的尺寸类宽度的屏幕尺寸的80%.在故事板中,我可以选择将不同大小的类别的不同变量添加到约束常量值,但不是乘数值.这是相等的宽度限制.我没有在程序上添加约束,所以我希望他们可能是一个解决方案,在这条路上.任何人都可以告诉我是否可以通过故事板或编程方式来做我正在寻找的内容?

  5. ios – CGPath和UIBezierPath()有什么区别?

    目前,我正在努力制作一个自定义按钮,我有一个图像,并具有坐标,但我发现您可以通过使用CGPath类或UIBezierPath创建一个按钮/对象类.有人可以告诉我两者有什么区别?解决方法CGPath是CoreGraphics库的不透明类型,而UIBezierPath是UIKit中的Obj-C类.UIBezierPath是一个围绕CGPath的包装,具有更加面向对象的界面和一些方便的方法.使用CGPath可能会略微更快,因为它不必经过Obj-C,并且它具有更高级的功能,如CGPathApply.重要的是,UI

  6. 是否可以从我的iOS应用程序包中删除文件?

    解决方法无法删除捆绑包中的文件.必须对应用程序进行签名,如果以任何方式修改了包,它将不会通过签名.我能想到的唯一其他解决方案是设置Web服务,并让您的应用程序根据需要下载部分内容.这可能是也可能不是可行的解决方案,具体取决于您的应用实际执行的操作.

  7. Swift40/90Days - 用函数式编程解决逻辑难题

    Swift90Days-用函数式编程解决逻辑难题这篇翻译的文章,用两种方法解决了同一个逻辑难题。第二种方法利用了Swift的一些语言特性,实现了函数式编程的解决方案。这样的代码对于指令式编程来说再平常不过,接下来我们就来看下如何用函数式编程解决这个问题。Swift中函数已经是一等公民,这让高阶函数变成可能,也就是说,一个函数可以是通过其它函数组装构成的。思考Swift对于函数式编程的支持让我感觉的兴奋,Excited!

  8. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  9. 关于oc和swift混编 框架framework时 只能在真机运行或只能在模拟器单独运行的解决方案

    问题描述:关于oc和swift混编框架framework时只能在真机运行或只能在模拟器单独运行的解决方案。

  10. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部