【问题标题】:Share complex object with another process与另一个进程共享复杂对象
【发布时间】:2013-09-27 12:50:42
【问题描述】:

我确实有一个复杂的数据对象。与另一个 python 进程共享它的最佳方式是什么?

背景: 为了避免GIL,我生成了第二个进程来完成所有计算。它使用UDP 登录到主进程。这个计算过程需要输入数据,即这个复杂的对象。那么我如何以最简单的方式分享它呢?

【问题讨论】:

    标签: python multiprocessing ipc


    【解决方案1】:

    您是否考虑过使用 pickle 对其进行序列化?

    import pickle
    fid = open(filename,'w')
    fid.write(pickle.dumps(data))
    fid.close()
    

    然后在另一个进程中加载​​它:

    fid = open(filename,'r')
    directData = fid.read()
    data = pickle.loads(directData)
    fid.close()
    

    其他格式也可以做类似的事情 导入json fid = open('jsonOutput','w') fid.write(json.dumps(数据)) fid.close()

    如果您不想通过文件传输,可以通过网络连接传输

    【讨论】:

      【解决方案2】:

      我现在正在使用以下:

      process = multiprocessing.Process(target=start_remote_runner, args=(context,))
      process.start()
      

      这会将context-object 传递给remote_runner。这确实在内部使用pickle 来传递对象。

      【讨论】:

        猜你喜欢
        • 2011-04-09
        • 2016-02-05
        • 2011-07-22
        • 2014-01-24
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        • 2021-10-07
        • 2016-10-09
        相关资源
        最近更新 更多