Spamworldpro Mini Shell
Spamworldpro


Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.21
Disable Function : NONE
Directory :  /lib/python3/dist-packages/twisted/python/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/twisted/python/__pycache__/threadpool.cpython-310.pyc
o

�b�'�@sxdZddlmZmZddlmZddlmZddl	m
Z
mZddlm
Z
ddlmZddlmZe�ZGd	d
�d
�ZdS)z�
twisted.python.threadpool: a pool of threads to which we dispatch tasks.

In most cases you can just use C{reactor.callInThread} and friends
instead of creating a thread pool directly.
�)�Thread�current_thread)�List)�pool)�context�log)�
deprecated)�Failure)�Versionc@s�eZdZdZdZdZdZdZdZe	Z
eee
dddd	�d
d�e��Zee�Zd,dd
�Zedd��Zedd��Zedd��Zedd��ZeZdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z d-d(d)�Z!d*d+�Z"dS).�
ThreadPoola�
    This class (hopefully) generalizes the functionality of a pool of threads
    to which work can be dispatched.

    L{callInThread} and L{stop} should only be called from a single thread.

    @ivar started: Whether or not the thread pool is currently running.
    @type started: L{bool}

    @ivar threads: List of workers currently running in this thread pool.
    @type threads: L{list}

    @ivar _pool: A hook for testing.
    @type _pool: callable compatible with L{_pool}
    ��FN�Twisted��rzthreading.current_thread)�version�replacementcsb|dksJd��||ksJd��|�_|�_|�_g�_�fdd�}�fdd�}��||��_dS)	ac
        Create a new threadpool.

        @param minthreads: minimum number of threads in the pool
        @type minthreads: L{int}

        @param maxthreads: maximum number of threads in the pool
        @type maxthreads: L{int}

        @param name: The name to give this threadpool; visible in log messages.
        @type name: native L{str}
        r�minimum is negative�minimum is greater than maximumcs(�j|d���i|��}�j�|�|S)N�name)�
threadFactory�
_generateName�threads�append)�a�kw�thread��self��;/usr/lib/python3/dist-packages/twisted/python/threadpool.py�trackingThreadFactoryLs���z2ThreadPool.__init__.<locals>.trackingThreadFactorycs�jsdS�jS)Nr)�started�maxrrrr �currentLimitSsz)ThreadPool.__init__.<locals>.currentLimitN)�minr#rr�_pool�_team)r�
minthreads�
maxthreadsrr!r$rrr �__init__8s
zThreadPool.__init__cCs|j��}|j|jS)a
        For legacy compatibility purposes, return a total number of workers.

        @return: the current number of workers, both idle and busy (but not
            those that have been quit by L{ThreadPool.adjustPoolsize})
        @rtype: L{int}
        )r'�
statistics�idleWorkerCount�busyWorkerCount)r�statsrrr �workersZs
	zThreadPool.workerscC�dg|j��jS)z�
        For legacy compatibility purposes, return the number of busy workers as
        expressed by a list the length of that number.

        @return: the number of workers currently processing a work item.
        @rtype: L{list} of L{None}
        N)r'r+r-rrrr �workingfs	zThreadPool.workingcCr0)a,
        For legacy compatibility purposes, return the number of idle workers as
        expressed by a list the length of that number.

        @return: the number of workers currently alive (with an allocated
            thread) but waiting for new work.
        @rtype: L{list} of L{None}
        N)r'r+r,rrrr �waitersqs
zThreadPool.waiterscsG�fdd�d�}|�S)z�
        For legacy compatibility purposes, return an object with a C{qsize}
        method that indicates the amount of work not yet allocated to a worker.

        @return: an object with a C{qsize} method.
        cseZdZ�fdd�ZdS)z$ThreadPool._queue.<locals>.NotAQueuecs�j��jS)a
                Pretend to be a Python threading Queue and return the
                number of as-yet-unconsumed tasks.

                @return: the amount of backlogged work not yet dispatched to a
                    worker.
                @rtype: L{int}
                )r'r+�backloggedWorkCount)�qrrr �qsize�s	z*ThreadPool._queue.<locals>.NotAQueue.qsizeN)�__name__�
__module__�__qualname__r5rrrr �	NotAQueue�sr9r)rr9rrr �_queue}s	zThreadPool._queuecCs8d|_d|_|��|j��j}|r|j�|�dSdS)z'
        Start the threadpool.
        FTN)�joinedr"�adjustPoolsizer'r+r3�grow)r�backlogrrr �start�s�zThreadPool.startcC�|j�d�dS)z�
        Increase the number of available workers for the thread pool by 1, up
        to the maximum allowed by L{ThreadPool.max}.
        rN)r'r=rrrr �startAWorker��zThreadPool.startAWorkercCsd|jpt|��d|j��S)z�
        Generate a name for a new pool thread.

        @return: A distinctive name for the thread.
        @rtype: native L{str}
        zPoolThread-�-)r�idr/rrrr r�szThreadPool._generateNamecCr@)zn
        Decrease the number of available workers by 1, by quitting one as soon
        as it's idle.
        rN)r'�shrinkrrrr �stopAWorker�rBzThreadPool.stopAWorkercCs"t|d|�t�||j|j�dS)N�__dict__)�setattrrr*r%r#�r�staterrr �__setstate__�szThreadPool.__setstate__cCsi}|j|d<|j|d<|S)Nr%r#)r%r#rIrrr �__getstate__�s

zThreadPool.__getstate__cOs|jd|g|�Ri|��dS)a
        Call a callable object in a separate thread.

        @param func: callable object to be called in separate thread

        @param args: positional arguments to be passed to C{func}

        @param kw: keyword args to be passed to C{func}
        N)�callInThreadWithCallback)r�func�argsrrrr �callInThread�s
zThreadPool.callInThreadcsP|jrdStj��jd��fdd������fdd��_|�_|j���dS)a$
        Call a callable object in a separate thread and call C{onResult} with
        the return value, or a L{twisted.python.failure.Failure} if the
        callable raises an exception.

        The callable is allowed to block, but the C{onResult} function must not
        block and should perform as little work as possible.

        A typical action for C{onResult} for a threadpool used with a Twisted
        reactor would be to schedule a L{twisted.internet.defer.Deferred} to
        fire in the main reactor thread using C{.callFromThread}.  Note that
        C{onResult} is called inside the separate thread, not inside the
        reactor thread.

        @param onResult: a callable with the signature C{(success, result)}.
            If the callable returns normally, C{onResult} is called with
            C{(True, result)} where C{result} is the return value of the
            callable.  If the callable throws an exception, C{onResult} is
            called with C{(False, failure)}.

            Optionally, C{onResult} may be L{None}, in which case it is not
            called at all.

        @param func: callable object to be called in separate thread

        @param args: positional arguments to be passed to C{func}

        @param kw: keyword arguments to be passed to C{func}
        N���csjz���}d}Wntyt�}d}Ynwd�_�jdur*��||�d�_dS|s3t�|�dSdS)NTF)�theWork�
BaseExceptionr	�onResultr�err)�result�ok)�	inContextrr rX�s�

�z6ThreadPool.callInThreadWithCallback.<locals>.inContextcstj��g��Ri���S)N)r�callr)rO�ctxrNrrr �<lambda>s���z5ThreadPool.callInThreadWithCallback.<locals>.<lambda>)	r;r�theContextTracker�currentContext�contextsrRrTr'�do)rrTrNrOrr)rOrZrNrXrr rM�sz#ThreadPool.callInThreadWithCallbackcCs.d|_d|_|j��|jD]}|��qdS)z9
        Shutdown the threads in the threadpool.
        TFN)r;r"r'�quitr�join)rrrrr �stops


�zThreadPool.stopcCs�|dur|j}|dur|j}|dksJd��||ksJd��||_||_|js)dS|j|jkr9|j�|j|j�|j|jkrK|j�|j|j�dSdS)z�
        Adjust the number of available threads by setting C{min} and C{max} to
        new values.

        @param minthreads: The new value for L{ThreadPool.min}.

        @param maxthreads: The new value for L{ThreadPool.max}.
        Nrrr)r%r#r"r/r'rEr=)rr(r)rrr r<s	�zThreadPool.adjustPoolsizecCs:t�d|j���t�d|j���t�d|j���dS)zw
        Dump some plain-text informational messages to the log about the state
        of this L{ThreadPool}.
        z	waiters: z	workers: ztotal: N)r�msgr2r1rrrrr �	dumpStats2szThreadPool.dumpStats)rr
N)NN)#r6r7r8�__doc__r%r#r;r"rrr�staticmethodrr
r�
currentThreadr&r*�propertyr/r1r2r:r4r?rArrFrKrLrPrMrbr<rdrrrr rsL���
"




	;

rN)re�	threadingrr�typingr�twisted._threadsrr&�twisted.pythonrr�twisted.python.deprecater�twisted.python.failurer	�twisted.python.versionsr
�object�
WorkerStoprrrrr �<module>s

Spamworldpro Mini