On Aug 25, 4:49 pm, castironpi <[EMAIL PROTECTED]> wrote: > On Aug 25, 4:25 pm, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > > > > > On Mon, 25 Aug 2008 13:03:09 -0700, castironpi wrote: > > > struct.Struct lets you encode Python objects into structured memory. It > > > accepts a format string, and optionally a buffer and offset to/from > > > which to read/write the structure. What do you think of random access > > > for the results? > > > > (unproduced) > > >>>> packer= struct.Struct( 'IIIf255p' ) > > >>>> packer.pack_into( buf, off, 10, 20, 30, 0.5, 'abc' ) > > >>>> packer.unpack_from( buf, off, 2 ) #reads field 2 > > > 30 > > > I don't like it for the same reason I don't like index access on tuples > > or lists that represent a "record" -- the numbers are quite meaningless. > > Names for the components result in much easier to understand source code, > > so I would prefer to use `ctypes` or `construct` to create such a record. > > > Ciao, > > Marc 'BlackJack' Rintsch > > I'm interested in the speed benefit, so you don't have to reconstruct > the entire 'record' just to read/write one 'field'. How in ctypes?
Model the constructor after 'namedtuple' type. (unproduced) >>> packer= struct.Struct( 'IIIf255p', 'i1', 'i2', 'i3', 'afloat', 'name' ) >>> packer.pack_into( buf, off, 10, 20, 30, 0.5, 'abc' ) >>> packer.unpack_from( buf, off, 'i3' ) 30 >>> packer.unpack_from( buf, off ) ( 10, 20, 30, 0.5, 'abc' ) You still get marginal speed benefit in sequential access. You avoid the construction of n-1 objects. -- http://mail.python.org/mailman/listinfo/python-list