<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body>
Sturla Molden brought up a point in an earlier thread ("Please help with subclassing numpy.ndarray") that I think is worth highlighting. A "common" approach to subclassing ndarray in python (<A href="http://www.scipy.org/Subclasses">http://www.scipy.org/Subclasses</A>) results in code that is not thread safe. This approach involves setting some class level variables inside the __new__ method, and then retrieving those values inside the __array_finalize__ method.<BR>
&nbsp;<BR>
A simple work around that Sturla alluded to is to explictly set a lock inside the __new__ method, and later release it in the __array_finalize__ method. However, this would cause problems if someone invoked the __new__ method in such a way that __array_finalize__ was not called afterwards (which I think is possible, isn't it?).<BR>
&nbsp;<BR>
The two subclasses of ndarray in the core numpy distribution (that I am aware of) , chararray and matrix, don't run into this problem because they can get all the relevant info they need by directly&nbsp;inspecting the ndarray that comes out of the __new__ method, and so they don't need to share any extra info between __new__ and __array_finalize__<BR>
&nbsp;<BR>
So, I am wondering if perhaps one of the experts on this list would be able to shed some light on a good way to create thread safe subclasses of ndarray.<BR>
&nbsp;<BR>
Thanks,<BR>
&nbsp;<BR>
- Matt Knox<BR></body>
</html>