관리-도구
편집 파일: _dummy_thread.cpython-37.opt-1.pyc
B � f� � @ s� d Z ddddddddgZd ZeZi fd d�Zdd� Zdd� Zd d� Zddd�Z dd� Z G dd� de�ZG dd� de�Z dadadd� ZdS )a/ Drop-in replacement for the thread module. Meant to be used as a brain-dead substitute so that threaded code does not need to be rewritten for when the thread module is not present. Suggested usage is:: try: import _thread except ImportError: import _dummy_thread as _thread �error�start_new_thread�exit� get_ident� allocate_lock�interrupt_main�LockType�RLockl c C s� t |�t t� �krtd��t |�t t� �kr4td��day| ||� W n. tk rZ Y n ddl}|�� Y nX datr�dat �dS )a� Dummy implementation of _thread.start_new_thread(). Compatibility is maintained by making sure that ``args`` is a tuple and ``kwargs`` is a dictionary. If an exception is raised and it is SystemExit (which can be done by _thread.exit()) it is caught and nothing is done; all other exceptions are printed out by using traceback.print_exc(). If the executed function calls interrupt_main the KeyboardInterrupt will be raised when the function returns. z2nd arg must be a tuplez3rd arg must be a dictF� NT) �type�tuple� TypeError�dict�_main� SystemExit� traceback� print_exc� _interrupt�KeyboardInterrupt)Zfunction�args�kwargsr � r �2/opt/alt/python37/lib64/python3.7/_dummy_thread.pyr s c C s t �dS )z'Dummy implementation of _thread.exit().N)r r r r r r = s c C s dS )z�Dummy implementation of _thread.get_ident(). Since this module should only be used when _threadmodule is not available, it is safe to assume that the current process is the only thread. Thus a constant can be safely returned. � r r r r r r A s c C s t � S )z0Dummy implementation of _thread.allocate_lock().)r r r r r r J s Nc C s | dk rt d��dS )z-Dummy implementation of _thread.stack_size().Nz'setting thread stack size not supportedr )r )�sizer r r � stack_sizeN s r c C s t � S )z0Dummy implementation of _thread._set_sentinel().)r r r r r � _set_sentinelT s r c @ sF e Zd ZdZdd� Zddd�ZeZdd � Zd d� Zdd � Z dd� Z dS )r a� Class implementing dummy implementation of _thread.LockType. Compatibility is maintained by maintaining self.locked_status which is a boolean that stores the state of the lock. Pickling of the lock, though, should not be done since if the _thread module is then used with an unpickled ``lock()`` from here problems could occur from this class not having atomic methods. c C s d| _ d S )NF)� locked_status)�selfr r r �__init__c s zLockType.__init__N���c C sH |dks|rd| _ dS | j s&d| _ dS |dkr@ddl}|�|� dS dS )a� Dummy implementation of acquire(). For blocking calls, self.locked_status is automatically set to True and returned appropriately based on value of ``waitflag``. If it is non-blocking, then the value is actually checked and not set if it is already acquired. This is all done so that threading.Condition's assert statements aren't triggered and throw a little fit. NTr F)r �timeZsleep)r �waitflag�timeoutr r r r �acquiref s zLockType.acquirec C s | � � d S )N)�release)r �typ�val�tbr r r �__exit__� s zLockType.__exit__c C s | j s t�d| _ dS )zRelease the dummy lock.FT)r r )r r r r r$ � s zLockType.releasec C s | j S )N)r )r r r r �locked� s zLockType.lockedc C s* d| j rdnd| jj| jjtt| ��f S )Nz<%s %s.%s object at %s>r) Zunlocked)r � __class__� __module__�__qualname__�hex�id)r r r r �__repr__� s zLockType.__repr__)Nr )�__name__r+ r, �__doc__r r# � __enter__r( r$ r) r/ r r r r r X s c s: e Zd ZdZ� fdd�Zd � fdd� Z� fdd �Z� ZS )r a Dummy implementation of threading._RLock. Re-entrant lock can be aquired multiple times and needs to be released just as many times. This dummy implemention does not check wheter the current thread actually owns the lock, but does accounting on the call counts. c s t � �� d| _d S )Nr )�superr �_levels)r )r* r r r � s zRLock.__init__Nr c s$ t � �||�}|r | jd7 _|S )zEAquire the lock, can be called multiple times in succession. r )r3 r# r4 )r r! r"