gpt4 book ai didi

python - 如何在 Ruby 和 Python 之间传递基本对象?

转载 作者:太空狗 更新时间:2023-10-29 22:17:00 26 4
gpt4 key购买 nike

目前我使用 JSON 作为序列化格式,将包含字符串、数字和数组的简单散列从 Ruby 传输到 Python 脚本中:

IO.popen('./convert.py', 'w') do |w|
w.write({ :height => height, :width => width, :id => job_id, :data => pix }.to_json)
w.write "\n"
w.close_write
end

在这种情况下,heightwidthjob_id 都是数字,pix 是一组数组整数。

正在运行的 python 脚本是:

#!/usr/bin/env python

from PIL import Image
import json
import sys

output = json.load(sys.stdin)

width = output['width']
height = output['height']
name = 'images/' + str(output['id']) + '/image.bmp'
data = [ tuple(datum) for datum in output['data'] ]

img = Image.new("RGB", (width, height))

img.putdata(data)

img.save(name)

使用具有 390 万个值的数组(可能是通常使用的大小的 1/4 左右)进行的一些快速测试表明脚本需要大约 105 秒,而 输出下面的所有行需要 90 秒= ... 注释掉了。显然,对于这样一个简单的脚本,如果序列化不占用 85% 的处理时间就更好了。

我能想到的唯一加快速度的方法是找到某种形式的二进制序列化/编码,可用于将数据从 Ruby 传输到 Python。不幸的是我找不到任何这样的系统,只有RMarshal这似乎能够以其他方式工作。

最佳答案

也许 MessagePack那是要走的路。存在多种语言的绑定(bind),包括 Ruby 和 Python。

关于python - 如何在 Ruby 和 Python 之间传递基本对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com