从协议缓冲区创建一个python字典,像对象用于熊猫

我当前连接到提供协议缓冲区的服务器。 我可能会收到大量的消息。 目前,我读取协议缓冲区并将其转换为Pandas DataFrame(通常不是必需步骤,但Pandas提供用于分析数据集的好工具)的过程是:

  • 读协议缓冲区,它将是一个谷歌protobuf对象
  • 使用protobuf_to_dict将协议缓冲区转换为字典
  • 使用pandas.DataFrame.from_records获取DataFrame
  • 这很好,但是,由于我从protobuf中读取了大量的消息,转换为字典,然后转换为熊猫效率非常低。 我的问题是:是否有可能创建一个可以使python protobuf对象看起来像字典的类? 也就是,删除第2步。任何引用或伪代码都会有帮助。


    你可能想检查ProtoText python包。 它提供了就地类似于字典的操作来访问您的protobuf对象。

    用法示例:假设您有一个python protobuf对象person_obj

    import ProtoText
    print person_obj['name']       # print out the person_obj.name 
    person_obj['name'] = 'David'   # set the attribute 'name' to 'David'
    # again set the attribute 'name' to 'David' but in batch mode
    person_obj.update({'name': 'David'})
    print ('name' in person_obj)  # print whether the 'name' attribute is set in person_obj 
    # the 'in' operator is better than the google implementation HasField function 
    # in the sense that it won't raise Exception even if the field is not defined  
    
    链接地址: http://www.djcxy.com/p/48335.html

    上一篇: creating a python dictionary like object from protocol buffers for use in pandas

    下一篇: C++ Google Protocol Buffers open http socket