
    9ij                     ~    S SK r S SKJr  SSKJr  SSKJr  SSKJ	r	   " S	 S
\
5      r " S S\	5      r " S S\5      rg)    N)ThreadPoolExecutor   )device   ImageBatchSampler   )BasePipelinec                   F   ^  \ rS rSrSS.U 4S jjr\S 5       rS rSrU =r	$ )"MultiDeviceSimpleInferenceExecutor   Npostprocess_resultc                F   > [         TU ]  5         Xl        X l        X0l        g N)super__init__
_pipelines_batch_sampler_postprocess_result)self	pipelinesbatch_samplerr   	__class__s       e/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/pipelines/_parallel.pyr   +MultiDeviceSimpleInferenceExecutor.__init__   s    #+#5     c                     U R                   $ r   )r   r   s    r   r   ,MultiDeviceSimpleInferenceExecutor.pipelines   s    r   c           	   /   h  #    [        [        U R                  5      S9 nU R                  U5      nSnU(       d  / nU R                   HC  n [	        U5      n	U	R                  n
UR                  S UU
UU5      nUR                  X45        ME     U Hd  u  pUR                  5       n[        U	R                  U5       H	  u  pXS'   M     U R                  (       a  U R                  X5      nU S h  vN   Mf     U(       d  M  S S S 5        g ! [
         a    Sn   M  f = f N.! , (       d  f       g = f7f)N)max_workersFTc                 @    [        U R                  " U/UQ70 UD65      $ r   )listpredict)pipelineinput_instancesargskwargss       r   <lambda><MultiDeviceSimpleInferenceExecutor.execute.<locals>.<lambda>5   s"    $,,_NtNvNIr   
input_path)r   lenr   r   nextStopIteration	instancessubmitappendresultzipinput_pathsr   )r   inputr(   r)   poolinput_batchesout_of_datainput_future_pairsr&   input_batchr'   futurer3   r,   result_items                  r   execute*MultiDeviceSimpleInferenceExecutor.execute"   s.      C,@AT //6MK!%'" $H&*=&9 '2&;&;O![[ !'F '--{.CD! !0* ,>'K#]]_F36{7N7NPV3W/
4>L1 4X//!%!9!9&!N%%% ,>/ "k BA ) &*0 &A BAsM   D2,D!DBD!0D1D!	D2DD!DD!!
D/+D2)r   r   r   )
__name__
__module____qualname____firstlineno__r   propertyr   r>   __static_attributes____classcell__r   s   @r   r   r      s.    GK 6 6  && &&r   r   c                      ^  \ rS rSrU 4S jr\S 5       rS rS r\	R                  S 5       r\	R                  S 5       r\	R                  S 5       rS	 rS
rU =r$ )#AutoParallelSimpleInferencePipelineK   c                 X  > [         T
U ]  " U0 UD6  SU l        U R                  b  [        R
                  " U R                  5      u  pEUb  [        U5      S:  a  SU l        / U l        U HE  nU R                  U[        R                  " XF/5      5      nU R                  R                  U5        MG     U R                  U5      nU R                  U5      n	[        U R                  U	U R                  S9U l        U R                  (       d!  U R                  XR                  5      U l        g g )NFr	   Tr   )r   r   _multi_device_inferencer   device_utilsparse_devicer-   r   _create_internal_pipelineconstr_devicer2   _get_batch_size_create_batch_samplerr   r   	_executor	_pipeline)r   configr(   r)   device_type
device_ids	device_idr&   
batch_sizer   r   s             r   r   ,AutoParallelSimpleInferencePipeline.__init__L   s    	$)&)',$;;"&2&?&?&L#K%#j/A*=/3,"$!+I#== : :; T H OO**84	 ",
 "11&9
 $ : :: F!COO!'+'?'?"
 ++!;;FKKPDN ,r   c                     U R                   $ r   )rL   r   s    r   multi_device_inference:AutoParallelSimpleInferencePipeline.multi_device_inferencei   s    +++r   c                     U R                   (       a$  U R                  R                  S   n[        X!5      $ [        U R                  U5      $ )Nr   )rL   rS   r   getattrrT   )r   namefirst_pipelines      r   __getattr__/AutoParallelSimpleInferencePipeline.__getattr__m   s;    ''!^^55a8N>004>>400r   c              /      #    U R                   (       a)  U R                  R                  " U/UQ70 UD6 S h  vN   g U R                  R                  " U/UQ70 UD6 S h  vN   g  N. N7fr   )rL   rS   r>   rT   r%   )r   r6   r(   r)   s       r   r%   +AutoParallelSimpleInferencePipeline.predictt   s~      ''~~--    ~~--   s!   5A*A&(A* A(!A*(A*c                     [         er   NotImplementedErrorr   rU   r   s      r   rO   =AutoParallelSimpleInferencePipeline._create_internal_pipeline       !!r   c                     [         er   rg   )r   rU   s     r   rQ   3AutoParallelSimpleInferencePipeline._get_batch_size   rk   r   c                     [         er   rg   r   rY   s     r   rR   9AutoParallelSimpleInferencePipeline._create_batch_sampler   rk   r   c                     U$ r    )r   r3   r;   s      r   r   7AutoParallelSimpleInferencePipeline._postprocess_result   s    r   )rS   rL   rT   r   )r@   rA   rB   rC   r   rD   r\   rb   r%   abcabstractmethodrO   rQ   rR   r   rE   rF   rG   s   @r   rI   rI   K   s    Q: , ,1& 	" " 	" " 	" " r   rI   c                   T    \ rS rSr\\R                  S 5       5       rS rS r	S r
Srg)(AutoParallelImageSimpleInferencePipeline   c                     [         er   rg   r   s    r   _pipeline_cls6AutoParallelImageSimpleInferencePipeline._pipeline_cls   s
     "!r   c                 d    U R                  UUU R                  U R                  U R                  S9$ )N)r   	pp_optionuse_hpip
hpi_config)rz   r}   r~   r   ri   s      r   rO   BAutoParallelImageSimpleInferencePipeline._create_internal_pipeline   s5    !!nn]] " 
 	
r   c                     [        U5      $ r   r   ro   s     r   rR   >AutoParallelImageSimpleInferencePipeline._create_batch_sampler   s     ,,r   c                 L    [        UR                  U5       H	  u  p4X4S'   M     U$ )N
page_index)r4   page_indexes)r   r3   r;   r   items        r   r   <AutoParallelImageSimpleInferencePipeline._postprocess_result   s*     #K$<$<f EJ!+ !Fr   rr   N)r@   rA   rB   rC   rD   rt   ru   rz   rO   rR   r   rE   rr   r   r   rw   rw      s1    "  "
-r   rw   )rt   concurrent.futuresr   utilsr   rM   common.batch_samplerr   baser
   objectr   rI   rw   rr   r   r   <module>r      s?     1 + 4 1& 1&hI, IX/R r   