Robert Smallshire wrote:
Michael,

Michael Foord wrote:
[snip...]
Here is an example of getting a byte array from a binary pickle in
IronPython:

import pickle
class A(object):
...  b = 'hello'
...  c = (None, 'fish', 7.2, 7j)
...  a = {1: 2}
...
p = pickle.dumps(A(), protocol=2)
p
u'\x80\x02c__main__\nA\nq\x00)\x81q\x01}q\x02b.'
from System import Array, Byte
a = Array[Byte](tuple(Byte(ord(c)) for c in p))
a
Array[Byte]((<System.Byte object at 0x0000000000000033 [128]>,
<System.Byte obje...

And the converse:

 >>> p2 = ''.join(chr(c) for c in a)
 >>> a2 = pickle.loads(p2)
 >>> a2
<A object at 0x000000000000004E>
 >>> a2.a
{1: 2}
 >>> a2.b
'hello'
 >>> a2.c
(None, 'fish', 7.2, 7j)

As a result of applying your str <--> Array[Byte] transformations to my
code, the persistence of pickles into SQLite BLOBs is now working as
planned. :-)

You'll also no doubt be pleased to hear that even with these extra
transformations, the IronPython version is around twice as fast as CPython
2.6 on a benchmark performed under completely unscientific conditions -
although there are many factors at play here...


Cool. :-)

Michael

Thanks again,

Rob


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to