
    J/Ph
                         d Z ddlZddlZddlZddlmZmZmZ ddl	m
Z
mZ ddlmZ ddlZd Zd Zd Z G d	 d
ej                  Zedk    r ej                     dS dS )zJ
Test threadsafety for compiler.
These tests will cause segfault if fail.
    N)jit	vectorizeguvectorize)temp_directoryoverride_config)configc                 *    t          j        |           S N)npones)nvs     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_threadsafety.pyfoor      s    71::    c                     | |z   S r
    )abs     r   	ufunc_foor      s    q5Lr   c                     | |z   |d<   d S )Nr   r   )r   r   outs      r   
gufunc_foor      s    UCFFFr   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestThreadSafetyc                     fd}|S )Nc                  P     t          di t                    }  | dd          S )N   
   r   )r   r   )cfuncoptionss    r   runnerz(TestThreadSafety.run_jit.<locals>.runner!   s,    "CNN'NN3''E5B<<r   r   selfr!   r"   s    ` r   run_jitzTestThreadSafety.run_jit    s#    	  	  	  	  	  r   c                 H   t          | j        j                  | _        t	          d| j                  5  fdfdt          d          D             }|D ]}|                                 |D ]}|                                 	 d d d            d S # 1 swxY w Y   d S )N	CACHE_DIRc                  h    t          d          D ] } t          j                  } |             !d S )Nr   )rangerandomchoice)_fnfnlists     r   chooserz-TestThreadSafety.run_compile.<locals>.chooser*   s>    r  Av..BBDDDD r   c                 :    g | ]}t          j                   S ))target)	threadingThread).0ir/   s     r   
<listcomp>z0TestThreadSafety.run_compile.<locals>.<listcomp>/   s7     & & & #7333 & & &r   r   )r   	__class____name__
_cache_dirr   r)   startjoin)r$   r.   thsthr/   s    `  @r   run_compilezTestThreadSafety.run_compile'   s   ()@AA[$/:: 	 	    
& & & &!!HH& & &C  



  					 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBc                 Z    |                      |                     d          g           d S NTnopythonr>   r%   r$   s    r   test_concurrent_jitz$TestThreadSafety.test_concurrent_jit6   s-    $,,,55677777r   c                 \    |                      |                     dd          g           d S NTrB   cacherC   rD   s    r   test_concurrent_jit_cachez*TestThreadSafety.test_concurrent_jit_cache9   s/    $,,D,AABCCCCCr   c                     fd}|S )Nc                       t          dgfi t                    } t          j                            d                              t          j                  x}} | ||          S )Nz(f4, f4)r   )r   r   r   r*   astypefloat32)r    r   r   r!   s      r   r"   z.TestThreadSafety.run_vectorize.<locals>.runner=   s^    6Izl66g66yAAEI$$R((//
;;;A5A;;r   r   r#   s    ` r   run_vectorizezTestThreadSafety.run_vectorize<   s#    	 	 	 	 	 r   c                 Z    |                      |                     d          g           d S r@   r>   rO   rD   s    r   test_concurrent_vectorizez*TestThreadSafety.test_concurrent_vectorizeC   s0    $,,d,;;<=====r   c                 \    |                      |                     dd          g           d S rG   rQ   rD   s    r   test_concurrent_vectorize_cachez0TestThreadSafety.test_concurrent_vectorize_cacheF   s2    $,,d$,GGHIIIIIr   c                     fd}|S )Nc                      dg}  t          | dfi t                    }t          j                            d                              t          j                  x}} |||          S )Nz(f4, f4, f4[:])z	(),()->()r   )r   r   r   r*   rM   rN   )sigr    r   r   r!   s       r   r"   z0TestThreadSafety.run_guvectorize.<locals>.runnerJ   sf    $%C<K[<<G<<ZHHEI$$R((//
;;;A5A;;r   r   r#   s    ` r   run_guvectorizez TestThreadSafety.run_guvectorizeI   s#    	 	 	 	 	
 r   c                 Z    |                      |                     d          g           d S r@   r>   rX   rD   s    r   test_concurrent_guvectorizez,TestThreadSafety.test_concurrent_guvectorizeQ   s0    $...==>?????r   c                 \    |                      |                     dd          g           d S rG   rZ   rD   s    r   !test_concurrent_guvectorize_cachez2TestThreadSafety.test_concurrent_guvectorize_cacheT   s2    $..D.IIJKKKKKr   c           
      2   |                      |                     dd          |                     d          |                     dd          |                     d          |                     dd          |                     d          g           d S )NTrH   rA   )r>   r%   rO   rX   rD   s    r   test_concurrent_mix_usez(TestThreadSafety.test_concurrent_mix_useW   s    $,,D,AA,,,55,,d$,GG,,d,;;..D.II...==? 	@ 	@ 	@ 	@ 	@r   N)r8   
__module____qualname__r%   r>   rE   rJ   rO   rR   rT   rX   r[   r]   r_   r   r   r   r   r      s            8 8 8D D D  > > >J J J  @ @ @L L L@ @ @ @ @r   r   __main__)__doc__r2   r*   numpyr   numbar   r   r   numba.tests.supportr   r   
numba.corer   unittestr   r   r   TestCaser   r8   mainr   r   r   <module>rk      s             - - - - - - - - - - ? ? ? ? ? ? ? ?             
?@ ?@ ?@ ?@ ?@x( ?@ ?@ ?@D zHMOOOOO r   