Your IP : 18.221.87.37


Current Path : /lib64/python3.6/multiprocessing/__pycache__/
Upload File :
Current File : //lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.opt-1.pyc

3


 \e�
@s:ddlZddlZddlmZddlmZddlmZmZejZ	dddd	d
dgZ
ejejej
ejejejejejejejejejd�Zd
d�Zdd�Zdd�Zddd�dd�Zddd�dd	�Zdd
�Zd&dd�Zdd�Zdd�Z dd�Z!dZ"iZ#ej$�Z%Gdd�de&�Z'Gd d!�d!e'�Z(Gd"d#�d#e'�Z)Gd$d%�d%e)�Z*dS)'�N�)�heap)�get_context)�	reduction�assert_spawning�RawValue�RawArray�Value�Array�copy�synchronized)�c�u�b�B�h�H�i�I�l�L�f�dcCs tj|�}tj|�}t||d�S)N)�ctypes�sizeofrZ
BufferWrapper�
rebuild_ctype)�type_�size�wrapper�r�$/usr/lib64/python3.6/sharedctypes.py�
_new_value&s

r!cGs<tj||�}t|�}tjtj|�dtj|��|j|�|S)z>
    Returns a ctypes object allocated from shared memory
    r)�typecode_to_type�getr!r�memset�	addressofr�__init__)�typecode_or_type�argsr�objrrr r+s

cCsjtj||�}t|t�rD||}t|�}tjtj|�dtj|��|S|t	|�}t|�}|j
|�|SdS)z=
    Returns a ctypes array allocated from shared memory
    rN)r"r#�
isinstance�intr!rr$r%r�lenr&)r'�size_or_initializerrr)�resultrrr r5s

T)�lock�ctxcGsXt|f|��}|dkr|S|dkr4|p*t�}|j�}t|d�sJtd|��t|||d�S)z6
    Return a synchronization wrapper for a Value
    FTN�acquirez'%r' has no method 'acquire')r0)TN)rr�RLock�hasattr�AttributeErrorr)r'r/r0r(r)rrr r	Es

cCsTt||�}|dkr|S|dkr0|p&t�}|j�}t|d�sFtd|��t|||d�S)z9
    Return a synchronization wrapper for a RawArray
    FTNr1z'%r' has no method 'acquire')r0)TN)rrr2r3r4r)r'r-r/r0r)rrr r
Ss


cCstt|��}|tj|�d<|S)Nr)r!�typerZpointer)r)Znew_objrrr rascCs�|pt�}t|tj�r"t|||�St|tj�rR|jtjkrFt|||�St	|||�St
|�}yt|}WnVtk
r�dd�|j
D�}tdd�|D��}d|j}t
|tf|�}t|<YnX||||�SdS)NcSsg|]}|d�qS)rr)�.0Zfieldrrr �
<listcomp>usz synchronized.<locals>.<listcomp>css|]}|t|�fVqdS)N)�
make_property)r6�namerrr �	<genexpr>vszsynchronized.<locals>.<genexpr>�Synchronized)rr*rZ_SimpleCDatar;r
�_type_�c_char�SynchronizedString�SynchronizedArrayr5�class_cache�KeyErrorZ_fields_�dict�__name__�SynchronizedBase)r)r/r0�cls�scls�namesrZ	classnamerrr rfs 

cCs@t|�t|tj�r(t|j|j|jffStt|�|jdffSdS)N)	rr*rr
rr<�_wrapperZ_length_r5)r)rrr �reduce_ctypesrIcCs8|dk	r||}tj|t�|j�}|j|�}||_|S)N)�_ForkingPickler�registerrIZcreate_memoryviewZfrom_bufferrH)rrZlengthZbufr)rrr r�s
rcCsJyt|Stk
rDi}tt|fd|�||t|<||SXdS)N�)�
prop_cacherA�exec�template)r9rrrr r8�sr8z�
def get%s(self):
    self.acquire()
    try:
        return self._obj.%s
    finally:
        self.release()
def set%s(self, value):
    self.acquire()
    try:
        self._obj.%s = value
    finally:
        self.release()
%s = property(get%s, set%s)
c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)rDNcCsB||_|r||_n|ptdd�}|j�|_|jj|_|jj|_dS)NT)�force)�_obj�_lockrr2r1�release)�selfr)r/r0rrr r&�s

zSynchronizedBase.__init__cCs
|jj�S)N)rR�	__enter__)rTrrr rU�szSynchronizedBase.__enter__cGs|jj|�S)N)rR�__exit__)rTr(rrr rV�szSynchronizedBase.__exit__cCst|�t|j|jffS)N)rrrQrR)rTrrr �
__reduce__�szSynchronizedBase.__reduce__cCs|jS)N)rQ)rTrrr �get_obj�szSynchronizedBase.get_objcCs|jS)N)rR)rTrrr �get_lock�szSynchronizedBase.get_lockcCsdt|�j|jfS)Nz<%s wrapper for %s>)r5rCrQ)rTrrr �__repr__�szSynchronizedBase.__repr__)NN)
rC�
__module__�__qualname__r&rUrVrWrXrYrZrrrr rD�s

rDc@seZdZed�ZdS)r;�valueN)rCr[r\r8r]rrrr r;�sr;c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)r?cCs
t|j�S)N)r,rQ)rTrrr �__len__�szSynchronizedArray.__len__c	Cs|�|j|SQRXdS)N)rQ)rTrrrr �__getitem__�szSynchronizedArray.__getitem__c
Cs|�||j|<WdQRXdS)N)rQ)rTrr]rrr �__setitem__�szSynchronizedArray.__setitem__c
Cs|�|j||�SQRXdS)N)rQ)rT�start�stoprrr �__getslice__�szSynchronizedArray.__getslice__cCs"|�||j||�<WdQRXdS)N)rQ)rTrarb�valuesrrr �__setslice__�szSynchronizedArray.__setslice__N)rCr[r\r^r_r`rcrerrrr r?�s
r?c@seZdZed�Zed�ZdS)r>r]�rawN)rCr[r\r8r]rfrrrr r>�sr>)NN)+r�weakref�rr�contextrrZForkingPicklerrJ�__all__r=Zc_wcharZc_byteZc_ubyteZc_shortZc_ushortZc_intZc_uintZc_longZc_ulongZc_floatZc_doubler"r!rrr	r
rrrIrr8rOrM�WeakKeyDictionaryr@�objectrDr;r?r>rrrr �<module>
s: