a
    Df	                     @   s:  d dl Z d dlZd dlZd dlZd dlZG dd deZdd Z	e
d dZdZd	Zeee e d Zd
Zeejdkreejd ZejeedZnejedZe
de   e Ze ZeeD ]<Zeee  Zeeed e  eZeje	eefejd qe   e
dej!e "dej! f  e#  dS )    Nc                   @   s    e Zd ZdZdd Zdd ZdS )SumzClass for callbacks
    c                 C   s   d| _ t | _d S )Ng        )valuethreadallocate_locklock)self r   `/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/ppft/tests/callback.py__init__   s    zSum.__init__c                 C   s&   | j   |  j|7  _| j   dS )z'
        the callback function
        N)r   acquirer   release)r   r   r   r   r	   add   s    
zSum.addN)__name__
__module____qualname____doc__r
   r   r   r   r   r	   r      s   r   c                 C   s>   d}t | |D ]*}|d dkr,|d| 8 }q|d| 7 }q|S )zCalculates partial sumr      g      ?)range)startendsumxr   r   r	   part_sum#   s    r   zUsage: python callback.py [ncpus]
    [ncpus] - the number of workers to run in parallel,
    if omitted it will be set to the number of processors in the system
   i -1   r   )	ppserverszStarting pp with %s workers)callbackzPartial sum is %s | diff = %sr   )$mathtime_threadr   sysZppftppobjectr   r   printr   r   partsintstepr   lenargvZncpusServerZ
job_serverZ	get_ncpusr   
start_timer   indexZstartiminZendiZsubmitr   waitr   logZprint_statsr   r   r   r	   <module>
   s4   