diff --git a/lib/py/src/TSerialization.py b/lib/py/src/TSerialization.py
new file mode 100644
index 0000000..8ec703d
--- /dev/null
+++ b/lib/py/src/TSerialization.py
@@ -0,0 +1,15 @@
+from protocol import TBinaryProtocol
+from transport import TTransport
+
+def serialize(thrift_object, protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer()
+    protocol = protocol_factory.getProtocol(transport)
+    thrift_object.write(protocol)
+    return transport.getvalue()
+
+def deserialize(base, buf, protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer(buf)
+    protocol = protocol_factory.getProtocol(transport)
+    base.read(protocol)
+    return base
+
diff --git a/test/py/SerializationTest.py b/test/py/SerializationTest.py
index 52bedd5..e37098b 100755
--- a/test/py/SerializationTest.py
+++ b/test/py/SerializationTest.py
@@ -27,6 +27,7 @@
 from thrift.transport import TTransport
 from thrift.transport import TSocket
 from thrift.protocol import TBinaryProtocol
+from thrift.TSerialization import serialize, deserialize
 import unittest
 import time
 
@@ -118,6 +119,23 @@
     self.assertEqual(prot.readString(), bigstring)
     self.assertEqual(prot.readI16(), 24)
 
+class SerializersTest(unittest.TestCase):
+
+  def testSerializeThenDeserialize(self):
+    obj = Xtruct2(i32_thing=1,
+                  struct_thing=Xtruct(string_thing="foo"))
+
+    s1 = serialize(obj)
+    for i in range(10):
+      self.assertEquals(s1, serialize(obj))
+      objcopy = Xtruct2()
+      deserialize(objcopy, serialize(obj))
+      self.assertEquals(obj, objcopy)
+
+    obj = Xtruct(string_thing="bar")
+    objcopy = Xtruct()
+    deserialize(objcopy, serialize(obj))
+    self.assertEquals(obj, objcopy)
 
 
 def suite():
@@ -127,6 +145,7 @@
   suite.addTest(loader.loadTestsFromTestCase(NormalBinaryTest))
   suite.addTest(loader.loadTestsFromTestCase(AcceleratedBinaryTest))
   suite.addTest(loader.loadTestsFromTestCase(AcceleratedFramedTest))
+  suite.addTest(loader.loadTestsFromTestCase(SerializersTest))
   return suite
 
 if __name__ == "__main__":
