
    tKgS                     T    d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZ	 G d d      Z
y)    N)assert_equalc                       e Zd ZdZd Zd Zd Zej                  j                  ej                  j                  d      d               Zy)	TestGILzECheck if the GIL is properly released by scipy.interpolate functions.c                     g | _         y N)messages)selfs    d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/interpolate/tests/test_gil.pysetup_methodzTestGIL.setup_method   s	        c                 :    | j                   j                  |       y r   )r   append)r	   messages     r
   logzTestGIL.log   s    W%r   c                 h    | j                    G fddt        j                        } |       S )Nc                       e Zd Z fdZy)0TestGIL.make_worker_thread.<locals>.WorkerThreadc                 0     d           d       y )Ninterpolation startedinterpolation complete )r	   argsr   targets    r
   runz4TestGIL.make_worker_thread.<locals>.WorkerThread.run   s    +,,-r   N)__name__
__module____qualname__r   )r   r   r   s   r
   WorkerThreadr      s    .r   r   )r   	threadingThread)r	   r   r   r   r   s    `` @r
   make_worker_threadzTestGIL.make_worker_thread   s-    hh	. 	.9++ 	. ~r   z*race conditions, may depend on system load)reasonc                 2   d fd}d  |d      }| j                  |      }|j                          t        d      D ](  }t        j                  d       | j                  d       * |j                          t        | j                  g d       y )	Nc                 z    t        j                  dd|       x}}t        j                  ||      \  }}||z  }|||fS )Nr     )nplinspacemeshgrid)n_pointsxyx_gridy_gridzs         r
   generate_paramsz9TestGIL.test_rectbivariatespline.<locals>.generate_params"   sA    KK422A[[A.NFFAa7Nr   c                     t        j                  dd      D ]A  } |      }t        j                         } |  t        j                         |z
  | kD  s?|c S  y )Ni  r%   )	itertoolscounttime)requested_timer)   r   time_startedr/   interpolates       r
   calibrate_delayz9TestGIL.test_rectbivariatespline.<locals>.calibrate_delay(   sM    %OOD$7&x0#yy{T"99;->K 8r   c                 F    t         j                  j                  | ||       y r   )scipyr6   RectBivariateSpline)r*   r+   r.   s      r
   r6   z5TestGIL.test_rectbivariatespline.<locals>.interpolate0   s    11!Q:r      )r4   g      ?working)r   r<   r<   r<   r   )	r!   startranger3   sleepr   joinr   r   )r	   r7   r   worker_threadir/   r6   s        @@r
   test_rectbivariatesplinez TestGIL.test_rectbivariatespline   s    		 	; a0//TBqAJJsOHHY  	T]] %
 	r   N)r   r   r   __doc__r   r   r!   pytestmarkxslowxfailrC   r   r   r
   r   r      sN    O&	 [[[[JK L r   r   )r1   r   r3   numpyr&   numpy.testingr   rE   scipy.interpolater9   r   r   r   r
   <module>rL      s$        &  5 5r   