Memoize _deepcopy_tuple() -- maybe this helps Tommy's problem.
diff --git a/Lib/copy.py b/Lib/copy.py
index a48e8c8..15e0e40 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -182,8 +182,12 @@
 		pass
 	for i in range(len(x)):
 		if x[i] is not y[i]:
-			return tuple(y)
-	return x
+			y = tuple(y)
+			break
+	else:
+		y = x
+	memo[d] = y
+	return y
 d[types.TupleType] = _deepcopy_tuple
 
 def _deepcopy_dict(x, memo):