如何在Ruby和Python之间传输基本对象?

前端之家收集整理的这篇文章主要介绍了如何在Ruby和Python之间传输基本对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我正在使用 JSON作为序列化格式,将包含字符串,数字和 Ruby数组的简单哈希转移到 Python脚本中:
  1. IO.popen('./convert.py','w') do |w|
  2. w.write({ :height => height,:width => width,:id => job_id,:data => pix }.to_json)
  3. w.write "\n"
  4. w.close_write
  5. end

在这种情况下,height,width和job_id都是数字,pix是整数数组的数组.

这个运行的python脚本是:

  1. #!/usr/bin/env python
  2.  
  3. from PIL import Image
  4. import json
  5. import sys
  6.  
  7. output = json.load(sys.stdin)
  8.  
  9. width = output['width']
  10. height = output['height']
  11. name = 'images/' + str(output['id']) + '/image.bmp'
  12. data = [ tuple(datum) for datum in output['data'] ]
  13.  
  14. img = Image.new("RGB",(width,height))
  15.  
  16. img.putdata(data)
  17.  
  18. img.save(name)

使用具有390万个值的数组(可能是通常使用的大小的1/4)进行的一些快速测试显示脚本需要大约105秒,并且所有行都低于输出90秒… …已注释掉.显然,如果序列化没有花费85%的处理时间用于这样一个简单的脚本,那将是很好的.

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

解决方法

也许 MessagePack是那样的方式.存在多种语言的绑定,包括Ruby和Python.

猜你在找的Ruby相关文章