U ,a@sBddlZddlZddlmZddlmZddlmZmZejZ dddd d d gZ ej ej ej ejejejejejejejejejejejd Zd dZddZddZdddddZddddd Zdd Zd&dd Z ddZ!ddZ"ddZ#dZ$iZ%e&Z'Gddde(Z)Gd d!d!e)Z*Gd"d#d#e)Z+Gd$d%d%e+Z,dS)'N)heap) get_context) reductionassert_spawningRawValueRawArrayValueArraycopy synchronized)cubBhHiIlLqQfdcCs t|}t|}t||dSN)ctypessizeofrZ BufferWrapper rebuild_ctype)type_sizewrapperr"A/opt/alt/python38/lib64/python3.8/multiprocessing/sharedctypes.py _new_value's  r$cGs<t||}t|}tt|dt||j||SNr)typecode_to_typegetr$rmemset addressofr__init__)typecode_or_typeargsrobjr"r"r#r,s   cCsjt||}t|trD||}t|}tt|dt||S|t |}t|}|j ||SdSr%) r&r' isinstanceintr$rr(r)rlenr*)r+size_or_initializerrr-resultr"r"r#r6s    T)lockctxcGsXt|f|}|dkr|S|dkr4|p*t}|}t|dsJtd|t|||dSNF)TNacquirez%r has no method 'acquire')r4)rrRLockhasattrAttributeErrorr )r+r3r4r,r-r"r"r#r Fs   cCsTt||}|dkr|S|dkr0|p&t}|}t|dsFtd|t|||dSr5)rrr7r8r9r )r+r1r3r4r-r"r"r#r Ts    cCstt|}|t|d<|Sr%)r$typerZpointer)r-Znew_objr"r"r#r bs cCs|pt}t|tjr"t|||St|tjrR|jtjkrFt|||St |||St |}z t |}WnRt k rdd|j D}dd|D}d|j}t |tf|}t |<YnX||||SdS)NcSsg|] }|dqS)rr").0Zfieldr"r"r# vsz synchronized..cSsi|]}|t|qSr") make_property)r;namer"r"r# wsz synchronized.. Synchronized)rr.rZ _SimpleCDatar@r _type_c_charSynchronizedStringSynchronizedArrayr: class_cacheKeyErrorZ_fields___name__SynchronizedBase)r-r3r4clsZsclsnamesrZ classnamer"r"r#r gs          cCs@t|t|tjr(t|j|j|jffStt||jdffSdSr) rr.rr rrA_wrapperZ_length_r:)r-r"r"r# reduce_ctypes rLcCs8|dk r||}t|t|}||}||_|Sr)_ForkingPicklerregisterrLZcreate_memoryviewZ from_bufferrK)rr!ZlengthZbufr-r"r"r#rs  rcCsPz t|WStk rJi}tt|fd|||t|<||YSXdS)N) prop_cacherFexectemplate)r>rr"r"r#r=s  r=z 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@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)rHNcCsB||_|r||_n|ptdd}||_|jj|_|jj|_dS)NT)Zforce)_obj_lockrr7r6release)selfr-r3r4r"r"r#r*s  zSynchronizedBase.__init__cCs |jSr)rT __enter__rVr"r"r#rWszSynchronizedBase.__enter__cGs |jj|Sr)rT__exit__)rVr,r"r"r#rYszSynchronizedBase.__exit__cCst|t|j|jffSr)rr rSrTrXr"r"r# __reduce__szSynchronizedBase.__reduce__cCs|jSrrSrXr"r"r#get_objszSynchronizedBase.get_objcCs|jSr)rTrXr"r"r#get_lockszSynchronizedBase.get_lockcCsdt|j|jfS)Nz<%s wrapper for %s>)r:rGrSrXr"r"r#__repr__szSynchronizedBase.__repr__)NN) rG __module__ __qualname__r*rWrYrZr\r]r^r"r"r"r#rHs rHc@seZdZedZdS)r@valueN)rGr_r`r=rar"r"r"r#r@sr@c@s4eZdZddZddZddZddZd d Zd S) rDcCs t|jSr)r0rSrXr"r"r#__len__szSynchronizedArray.__len__c Cs&||j|W5QRSQRXdSrr[)rVrr"r"r# __getitem__szSynchronizedArray.__getitem__c Cs|||j|<W5QRXdSrr[)rVrrar"r"r# __setitem__szSynchronizedArray.__setitem__c Cs*||j||W5QRSQRXdSrr[)rVstartstopr"r"r# __getslice__szSynchronizedArray.__getslice__c Cs"|||j||<W5QRXdSrr[)rVrerfvaluesr"r"r# __setslice__szSynchronizedArray.__setslice__N)rGr_r`rbrcrdrgrir"r"r"r#rDs rDc@seZdZedZedZdS)rCrarawN)rGr_r`r=rarjr"r"r"r#rCsrC)NN)-rweakrefrrcontextrrZForkingPicklerrM__all__rBZc_wcharZc_byteZc_ubyteZc_shortZc_ushortZc_intZc_uintZc_longZc_ulongZ c_longlongZ c_ulonglongZc_floatZc_doubler&r$rrr r r r rLrr=rRrPWeakKeyDictionaryrEobjectrHr@rDrCr"r"r"r# sL