Pc@sdZddddddddd d d d d ddddddddddddddgZdZddlZddlZddlmZmZmZdd l m Z m Z d!e fd"YZ d e fd#YZd e fd$YZd%e fd&YZddlZd'Zed(Zd)Zd*Zd+Zdd,Zd-Zd.Zd/Zdd0Zd1d2Zd1d3Zd4Z d5d6Z!d5d7Z"ddd@dd8Z#d9Z$d:Z%d;Z&d<Z'ej(d=krd>Z)ed?g7ZndS(As0.70a1tProcesstcurrent_processtactive_childrentfreeze_supporttManagertPipet cpu_countt log_to_stderrt get_loggertallow_connection_picklingtBufferTooShortt TimeoutErrortLocktRLockt SemaphoretBoundedSemaphoret ConditiontEventtQueuet JoinableQueuetPooltValuetArraytRawValuetRawArraytSUBDEBUGt SUBWARNINGs"R. Oudkerk (r.m.oudkerk@gmail.com)iN(RRR(RRt ProcessErrorcBseZRS((t__name__t __module__(((s)..\python\lib\multiprocessing\__init__.pyRFscBseZRS((RR(((s)..\python\lib\multiprocessing\__init__.pyR IscBseZRS((RR(((s)..\python\lib\multiprocessing\__init__.pyR LstAuthenticationErrorcBseZRS((RR(((s)..\python\lib\multiprocessing\__init__.pyROscCs'ddlm}|}|j|S(s Returns a manager associated with a running server process The managers methods such as `Lock()`, `Condition()` and `Queue()` can be used to create shared objects. i(t SyncManager(tmultiprocessing.managersRtstart(Rtm((s)..\python\lib\multiprocessing\__init__.pyRYs  cCsddlm}||S(s; Returns two connection object connected by a pipe i(R(tmultiprocessing.connectionR(tduplexR((s)..\python\lib\multiprocessing\__init__.pyRescCstjdkrIyttjd}Wqttfk rEd}qXndtjksgtjdkry.tjd}t|j}WdQXWqtk rd}qXn6ytj d}Wn tt t fk rd}nX|d kr|St d dS( s2 Returns the number of CPUs in the system twin32tNUMBER_OF_PROCESSORSitbsdtdarwinssysctl -n hw.ncpuNtSC_NPROCESSORS_ONLNiscannot determine number of cpus( tsystplatformtinttostenviront ValueErrortKeyErrortpopentreadtsysconftOSErrortAttributeErrortNotImplementedError(tnumtp((s)..\python\lib\multiprocessing\__init__.pyRls$     cCs?tjdkr;ttdtr;ddlm}|ndS(s Check whether this is a fake forked process in a frozen executable. If so then run code specified by commandline and exit. R%tfrozeni(RN(R*R+tgetattrtFalsetmultiprocessing.forkingR(R((s)..\python\lib\multiprocessing\__init__.pyRs!cCsddlm}|S(sR Return package logger -- if it does not already exist then it is created i(R(tmultiprocessing.utilR(R((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}||S(sB Turn on logging and add a handler which prints to stderr i(R(R=R(tlevelR((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}dS(sO Install support for sending connections and sockets between processes i(t reductionN(tmultiprocessingR?(R?((s)..\python\lib\multiprocessing\__init__.pyR scCsddlm}|S(s- Returns a non-recursive lock object i(R (tmultiprocessing.synchronizeR (R ((s)..\python\lib\multiprocessing\__init__.pyR scCsddlm}|S(s) Returns a recursive lock object i(R (RAR (R ((s)..\python\lib\multiprocessing\__init__.pyR scCsddlm}||S(s$ Returns a condition object i(R(RAR(tlockR((s)..\python\lib\multiprocessing\__init__.pyRsicCsddlm}||S(s$ Returns a semaphore object i(R(RAR(tvalueR((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}||S(s, Returns a bounded semaphore object i(R(RAR(RCR((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}|S(s! Returns an event object i(R(RAR(R((s)..\python\lib\multiprocessing\__init__.pyRsicCsddlm}||S(s Returns a queue object i(R(tmultiprocessing.queuesR(tmaxsizeR((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}||S(s Returns a queue object i(R(RDR(RER((s)..\python\lib\multiprocessing\__init__.pyRscCs#ddlm}|||||S(s' Returns a process pool object i(R(tmultiprocessing.poolR(t processest initializertinitargstmaxtasksperchildR((s)..\python\lib\multiprocessing\__init__.pyRscGsddlm}|||S(s! Returns a shared object i(R(tmultiprocessing.sharedctypesR(ttypecode_or_typetargsR((s)..\python\lib\multiprocessing\__init__.pyRscCsddlm}|||S(s Returns a shared array i(R(RKR(RLtsize_or_initializerR((s)..\python\lib\multiprocessing\__init__.pyRscOs ddlm}||||S(s. Returns a synchronized shared object i(R(RKR(RLRMtkwdsR((s)..\python\lib\multiprocessing\__init__.pyRscKs ddlm}||||S(s- Returns a synchronized shared array i(R(RKR(RLRNROR((s)..\python\lib\multiprocessing\__init__.pyRsR%cCsddlm}||dS(s Sets the path to a python.exe or pythonw.exe binary used to run child processes on Windows instead of sys.executable. Useful for people embedding Python. i(tset_executableN(R<RP(t executableRP((s)..\python\lib\multiprocessing\__init__.pyRPsRP((*t __version__t__all__t __author__R-R*tmultiprocessing.processRRRR=RRt ExceptionRR R Rt_multiprocessingRtTrueRRRRtNoneRR R R RRRRRRRRRRRR+RP(((s)..\python\lib\multiprocessing\__init__.pyt+sN