Your IP : 3.144.107.197


Current Path : /lib64/python3.6/multiprocessing/__pycache__/
Upload File :
Current File : //lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.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�t|t�std��|pt�}t|tj�r6t|||�St|tj�rf|jtj	krZt
|||�St|||�St|�}yt
|}WnVtk
r�dd�|jD�}tdd�|D��}d|j}t|tf|�}t
|<YnX||||�SdS)Nzobject already synchronizedcSsg|]}|d�qS)rr)�.0Zfieldrrr �
<listcomp>usz synchronized.<locals>.<listcomp>css|]}|t|�fVqdS)N)�
make_property)r6�namerrr �	<genexpr>vszsynchronized.<locals>.<genexpr>�Synchronized)r*�SynchronizedBase�AssertionErrorrrZ_SimpleCDatar;r
�_type_�c_char�SynchronizedString�SynchronizedArrayr5�class_cache�KeyErrorZ_fields_�dict�__name__)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rJcCs8|dk	r||}tj|t�|j�}|j|�}||_|S)N)�_ForkingPickler�registerrJZcreate_memoryviewZfrom_bufferrI)rrZlengthZbufr)rrr r�s
rcCsJyt|Stk
rDi}tt|fd|�||t|<||SXdS)N�)�
prop_cacherC�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)r<NcCsB||_|r||_n|ptdd�}|j�|_|jj|_|jj|_dS)NT)�force)�_obj�_lockrr2r1�release)�selfr)r/r0rrr r&�s

zSynchronizedBase.__init__cCs
|jj�S)N)rS�	__enter__)rUrrr rV�szSynchronizedBase.__enter__cGs|jj|�S)N)rS�__exit__)rUr(rrr rW�szSynchronizedBase.__exit__cCst|�t|j|jffS)N)rrrRrS)rUrrr �
__reduce__�szSynchronizedBase.__reduce__cCs|jS)N)rR)rUrrr �get_obj�szSynchronizedBase.get_objcCs|jS)N)rS)rUrrr �get_lock�szSynchronizedBase.get_lockcCsdt|�j|jfS)Nz<%s wrapper for %s>)r5rErR)rUrrr �__repr__�szSynchronizedBase.__repr__)NN)
rE�
__module__�__qualname__r&rVrWrXrYrZr[rrrr r<�s

r<c@seZdZed�ZdS)r;�valueN)rEr\r]r8r^rrrr r;�sr;c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)rAcCs
t|j�S)N)r,rR)rUrrr �__len__�szSynchronizedArray.__len__c	Cs|�|j|SQRXdS)N)rR)rUrrrr �__getitem__�szSynchronizedArray.__getitem__c
Cs|�||j|<WdQRXdS)N)rR)rUrr^rrr �__setitem__�szSynchronizedArray.__setitem__c
Cs|�|j||�SQRXdS)N)rR)rU�start�stoprrr �__getslice__�szSynchronizedArray.__getslice__cCs"|�||j||�<WdQRXdS)N)rR)rUrbrc�valuesrrr �__setslice__�szSynchronizedArray.__setslice__N)rEr\r]r_r`rardrfrrrr rA�s
rAc@seZdZed�Zed�ZdS)r@r^�rawN)rEr\r]r8r^rgrrrr r@�sr@)NN)+r�weakref�rr�contextrrZForkingPicklerrK�__all__r?Zc_wcharZc_byteZc_ubyteZc_shortZc_ushortZc_intZc_uintZc_longZc_ulongZc_floatZc_doubler"r!rrr	r
rrrJrr8rPrN�WeakKeyDictionaryrB�objectr<r;rAr@rrrr �<module>
s: