
    ϑi                     r   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr	S SK
r
S SK
Jr  S SKJrJr  S SKJr  S SKJr  S SKJr  SSKJrJrJr  S	S
KJrJrJr  SSKJr  SSKJ r J!r!  SSK"J#r#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*  Sq+S r,\RZ                  " \,5         " S S5      r. " S S\.5      r/ " S S\.5      r0g)    N)profiler)_current_expected_place_set_expected_place)datatype_to_vartype)	benchmark)in_profiler_mode   )corein_dynamic_modein_pir_mode   )MP_STATUS_CHECK_INTERVALCleanupFuncRegistrar_set_SIGCHLD_handler   )_InfiniteIterableSampler)default_collate_fndefault_convert_fn)_flatten_batch_restore_batch)_DatasetKind_IterableDatasetStopIteration_ResumeIteration_worker_loop_WorkerExceptionc                  N    [         b   [         R                  5         B g g !    g = fN)_loader__del__     d/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/io/dataloader/dataloader_iter.py_clear_loaderr#   D   s)    	OO 	s     $c                   L    \ rS rSrSrS r\S 5       rS rS r	S r
S rS	 rS
rg)_DataLoaderIterBaseQ   z
Iterator implement of DataLoader, will load and feed mini-batch
data by setting in given dataloader.

Args:
    loader(instance of DataLoader): instance of `paddle.io.DataLoader`
c                    UR                   U l        UR                  =(       d    / U l        UR                  U l        UR                  U l        UR                  U l	        UR                  U l        UR                  U l        UR                  U l        UR                   U l        UR$                  U l        UR(                  U l        UR,                  U l        UR0                  S:  a  UR0                  O[2        U l        UR6                  U l        UR:                  U l        UR>                  U l         [C        U RD                  5      U l#        U R                  (       a  URH                  =(       d    [J        U l&        OURH                  =(       d    [N        U l&        S U l(        S U l)        [T        RV                  " 5       U l,        g )Nr   )-dataset_dataset	feed_list
_feed_listplaces_placesreturn_list_return_listbatch_sampler_batch_sampler	drop_last
_drop_lastauto_collate_batch_auto_collate_batchnum_workers_num_workersuse_buffer_reader_use_buffer_readerreader_buffer_size_reader_buffer_sizeprefetch_factor_prefetch_factoruse_shared_memory_use_shared_memorytimeoutr   _timeoutworker_init_fn_worker_init_fndataset_kind_dataset_kind
pin_memory_pin_memoryiter_index_sampler_sampler_iter
collate_fnr   _collate_fnr   _blocking_queue_thread	threadingEvent_thread_done_event)selfloaders     r"   __init___DataLoaderIterBase.__init__Z   sS    **0b}}"..$22 **#)#<#< ".."(":":#)#<#<  & 6 6"(":":$nnq0FNN6N 	  &44#00!,,!$"5"56##%00F4FD%00F4FD  $"+//"3r!   c                     U R                   (       a  U R                  $ U R                  [        R                  :X  a'  [        [        [        U R                  5      5      5      $ [        U R                  S5      $ Nr   )
r5   r1   rE   r   MAPlistrangelenr)   r   rR   s    r"   rI   "_DataLoaderIterBase._index_sampler}   sU    ##&&&!!\%5%55E#dmm"4566/qAAr!   c                     U $ r   r    r\   s    r"   __iter___DataLoaderIterBase.__iter__   s    r!   c                     [        S5      e)Nz*Should implement `__next__` for a iterator)NotImplementedErrorr\   s    r"   __next___DataLoaderIterBase.__next__   s    !"NOOr!   c                 ,    [        U R                  5      $ r   )r[   r1   r\   s    r"   __len___DataLoaderIterBase.__len__   s    4&&''r!   c                     U R                   R                  5         U R                  (       a  U R                  R                  5         g g r   )rQ   setrM   closer\   s    r"   _exit_thread_expectedly+_DataLoaderIterBase._exit_thread_expectedly   s4    ##%  &&(  r!   c                     U R                   R                  5         U R                  (       a  U R                  R                  5         g g r   )rQ   ri   rM   killr\   s    r"   _exit_thread_unexpectedly-_DataLoaderIterBase._exit_thread_unexpectedly   s4    ##%  %%'  r!   )r5   r1   rM   rL   r)   rE   r3   r+   r7   rG   r-   r=   r;   r/   rJ   rN   rQ   rA   r9   r?   rC   N)__name__
__module____qualname____firstlineno____doc__rT   propertyrI   r_   rc   rf   rk   ro   __static_attributes__r    r!   r"   r%   r%   Q   s=    !4F B BP()
(r!   r%   c                   P   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
rU =r$ )_DataLoaderIterSingleProcess   z[
Single process implement of DataLoaderIter, loading data from
loader.data in main process
c                   > [         TU ]  U5        [        R                  " U R                  U R
                  U R                  U R                  U R                  5      U l	        / U l
        U R                  [        U R                  5      -  U l        SU l         U R!                  5         U qg ! ["         a    U R%                  5         e f = fNF)superrT   r   create_fetcherrE   r)   r5   rL   r3   _dataset_fetcher_structure_infosr=   r[   r-   _blocking_queue_capacity	_shutdown_init_thread	Exception_try_shutdown_allr   )rR   rS   	__class__s     r"   rT   %_DataLoaderIterSingleProcess.__init__   s      , ; ;MM$$OO!
 !#
 )-(=(=LLA
 )
% 	   	""$	s   B+ +Cc                    U R                    Vs/ s H  oR                  PM     snU l        U R                    Vs/ s H  oR                  PM     snU l        [        5       (       aV  U R                    Vs/ s H  nSPM     snU l        U R                    Vs/ s H  n[        UR                     PM     snU l	        OdU R                    Vs/ s H  oR                  R                  5       PM     snU l        U R                    Vs/ s H  oR                  PM     snU l	        [        R                  " [        R                  " 5       U R                  [!        U R"                  5      S:  5      U l        [        R&                  " U R$                  U R                  U R                  U R                  U R                  U R"                  U R(                  SU R*                  U R,                  5
      U l        [0        R2                  " U R4                  [7        5       4S9U l        SU R8                  l        U R8                  R=                  5         g s  snf s  snf s  snf s  snf s  snf s  snf NFr   Ttargetargs)r+   name
_var_namesshape_shapesr   _need_check_feedr   dtype_dtypesdescneed_check_feedr
    init_dense_tensor_blocking_queueVariabler   r[   r-   rM   create_py_readerr9   rG   r;   _readerrO   Thread_thread_loopr   rN   daemonstartrR   vs     r"   r   )_DataLoaderIterSingleProcess._init_thread   s   +/??;?a66?;)-9A9==48OO$DOqUO$DD!6:oo6E#AGG,oDL
 37//%2AQ&&(/%D! .2__=_GG_=DL#DDMMO))! 

 ,,  OOLLLL!!LL##$$
 !''$$,C,E+G
 #G <9$D% >s"   II4II
#II c                 $   [         R                  " S[        [        U 5      5      -   5        [	        U5        U R
                  R                  5       (       Gd   [        U R                  5      nU R                  R                  X R
                  5      nUb  U R
                  R                  5       (       a  GOp[        U5      u  p4U R                  R                  U5        U R
                  R                  5       (       a  GO' [         R                   " 5       nU H  n[#        U[$        R&                  5      (       a  UR)                  5       R+                  5       nO[[#        U[         R,                  5      (       d<  [         R,                  " 5       nUR/                  U[         R0                  " 5       5        UnUR                  U5        M     U R
                  R                  5       (       a  O> U R2                  R5                  U5        U R
                  R                  5       (       d  GM  U R                  5         g ! [         a    U R                  5          g f = f!   U R                  5          Ng= f! [6         a  nU R9                  5         UeS nAff = f)NDataloader_)r
   set_current_thread_namestridr   rQ   is_setnextrJ   r   fetchStopIterationrk   r   r   appendDenseTensorArray
isinstancepaddleTensorvalue
get_tensorDenseTensorri   CPUPlacerM   pushr   ro   )	rR   legacy_expected_placeindicesbatch	structurearrayslottmpes	            r"   r   )_DataLoaderIterSingleProcess._thread_loop   s    	$$]SD]%BC12))0022t112
 --3344 } 7 7 > > @ @  .e4E!!((3&&--//--/!D!$66#zz|668'd.>.>??"..0dmmo6"LL& " **11333((--e4S ))0022b 	$$&O ! ,,.@3002 ..0sC   :H7  C'I. )I 7III+)I. +I. .
J8J

Jc                 &   [        5       (       a=  [        R                  " S[        R                  R                  S9nUR                  5          [        5       R                  U 5        [        5       R                  5         [        5       (       a`  [        R                  R                  U R                  R                  5       S   5      n[        X R                   R#                  S5      5      nGOU R$                  (       a  U R                  R                  5       n['        [)        U5      5       H  nX#   R+                  5       X#'   M     ['        [)        U R,                  5      5       Vs/ s H  nU R                   R#                  S5      PM      nn[/        X%5       VVs/ s H  u  pg[        Xg5      PM     nnn[)        U R,                  5      S:X  a  US   nOU R                  R1                  5       n[        5       R3                  5         U[        5       (       a  WR5                  5         $ $ s  snf s  snnf ! [6         a,    U R                  R9                  5         U R;                  5         e f = f! [        5       (       a  WR5                  5         f f = f)Nry   r   
event_typer   r   )r   r   RecordEventTracerEventType
Dataloaderbeginr   check_if_need_recordbefore_readerr   r
   eagerread_next_tensor_listr   read_next_listr   r   popr/   rZ   r[   _move_to_listr-   zip	read_nextafter_readerendr   shutdownr   rR   trace_eventdatai_structsdss           r"   rc   %_DataLoaderIterSingleProcess.__next__'  s   "..3#33>>K #	"K,,T2K%%'  zz77LL//1!4 &d,A,A,E,Ea,HI $$<<668D"3t9-"&'"7"7"9 . "'s4<<'8!9!9A --11!4!9   >A=OP=OTQN10=ODP 4<<(A-#Aw<<113DK$$&  !!! ") Q  	LL!!#""$	
  !!! "s8   DH5 (%H*H5 H/4AH5 *H5 56I++I. ."Jc                 t   U R                   (       a  U R                  R                  5         [        S5       H:  nU R                   R	                  5       (       a  [
        R                  " S5        M:    O>   U R                   [        R                  " 5       La  U R                   R                  5         S U l         g g )Nr	   r   )
rN   rQ   ri   rZ   is_alivetimesleeprO   current_threadjoinrR   r   s     r"   _shutdown_thread-_DataLoaderIterSingleProcess._shutdown_threadS  s    <<##'') 1X<<((**JJqM	  <<y'?'?'AALL%%'DL r!   c                     U R                   (       dK   U R                  (       a!  U R                  R                  5         S U l        U R                  5         SU l         g g ! SU l         f = f)NT)r   rM   rj   r   r\   s    r"   r   ._DataLoaderIterSingleProcess._try_shutdown_allc  sX    ~~& ''((..0+/D( %%'!%  "&s   AA 	A'c                 $    U R                  5         g r   r   r\   s    r"   r   $_DataLoaderIterSingleProcess.__del__r       r!   )rM   r   r   r   r   r   r   r   r   rN   r   )rq   rr   rs   rt   ru   rT   r   r   rc   r   r   r   rw   __classcell__r   s   @r"   ry   ry      s4    
"H$L:'x*"X  &! !r!   ry   c                   ~   ^  \ rS rSrU 4S jrS rS rS rS rSS jr	SS jr
S	 rS
 rS rS rS rS rS rSrU =r$ )_DataLoaderIterMultiProcessiv  c                   > [         TU ]  U5        UR                  U l        SU l        U R                  S:  d   SU R                   S35       eS U l        SU l        SU l        SU l        0 U l	        / U l
        U R                  [        U R                  [        U R                  5      5      -  U l        [         R"                  " 5       U l        [&        R(                  R+                  S[,        R.                  S9U l        [2        R4                  R7                  SS5      S;   a"   S[        U R8                  S   5      -  U l        OSU l        U R:                  S
-  U R                  -  U l         SU l!        U RE                  5         [G        U R                  5       H  nU RI                  5         M      U RK                  5         g !   SU l        [<        R>                  " S	5         N= f! [L         a    U RO                  5         e f = f)Nr   z-Multi-process DataLoader invalid num_workers())lowhighFLAGS_use_shm_cacheF)r   1TTruetruer	   zUSetting the shm cache buffer size to 0, equivalent to not using the shm cache policy.r   )(r}   rT   _persistent_workers_resume_worker_cntr7   _data_queue	_send_idx	_rcvd_idx_batches_outstanding_task_infosr   r=   maxr[   r-   _outstanding_capacityrO   Lock_thread_locknprandomrandintsysmaxsize
_base_seedosenvirongetr)   _worker_shm_buffer_sizewarningswarn_main_thread_shm_buffer_sizer   _init_workersrZ   _try_put_indicesr   r   r   )rR   rS   r   r   s      r"   rT   $_DataLoaderIterMultiProcess.__init__w  s    #)#=#= "#  1$ 	
;D<M<M;NaP	
$
  
 $%! " &*%:%:Ss4<<0>
 &
"
 &NN,))+++D
 ::>>/7 <
 
05T]]1=M9N/N, ,-D())Q.1B1BB 	) t112A!!# 3	%/0,k"  	""$	s   # G 0G% G"%Hc                 &   SSK Jn  / U l        / U l        / U l        [
        R                  " [        U R                  5      5      U l	        UR                  5       U l        UR                  5       U l        [        R                  " 5       U l        [        U R                  5       GH&  nUR                  5       nUR!                  5         U R                  R#                  U5        UR%                  [&        U R(                  U R*                  UU R                  U R                  U R,                  U R.                  U R0                  U R2                  UU R                  U R4                  U R6                  U R8                  4S9nSUl        UR=                  5         U R                  R#                  U5        U R                  R#                  S5        GM)     [>        R@                  " [C        U 5      [E        S U R                   5       5      5        [G        5         g )Nr   )multiprocessingr   Tc              3   8   #    U  H  oR                   v   M     g 7fr   )pid.0ws     r"   	<genexpr><_DataLoaderIterMultiProcess._init_workers.<locals>.<genexpr>  s     .Lmuums   )$paddle.incubater  _workers_worker_status_indices_queues	itertoolscyclerZ   r7   _workers_idx_cycleQueuer   rP   _workers_done_eventrO   rQ   cancel_join_threadr   Processr   r)   rE   r5   rL   r3   rC   r?   r  r  r   r   r
   _set_process_pidsr   tupler   )rR   r  r   indices_queueworkers        r"   r  )_DataLoaderIterMultiProcess._init_workers  s   3  !"+//%8I8I2J"K +002 $3#8#8#: "+//"3t(()A+113M,,.  ''6$,,#MM&&!$$,,,,$$OO((%%++OO00 - F& !FMLLNMM  (&&t,5 *8 	r$x.Ldmm.L)LMr!   c                     U R                   b    U R                   R                  5         M  g !   U R                   R                  5         U R                   R                  5          g = fr   )r   
get_nowaitr!  rj   r\   s    r"   _clear_and_remove_data_queue8_DataLoaderIterMultiProcess._clear_and_remove_data_queue  s`    '$$//1  ($$779$$**,s	   - 6A%c                 >   U R                    Vs/ s H  oR                  PM     snU l        U R                    Vs/ s H  oR                  PM     snU l        [        5       (       aV  U R                    Vs/ s H  nSPM     snU l        U R                    Vs/ s H  n[        UR                     PM     snU l	        OdU R                    Vs/ s H  oR                  R                  5       PM     snU l        U R                    Vs/ s H  oR                  PM     snU l	        [        R                  " [        R                  " 5       U R                  [!        U R"                  5      S:  5      U l        [        R&                  " U R(                  5        [        R*                  " U R$                  U R                  U R                  U R                  U R                  U R"                  U R,                  SU R.                  U R0                  5
      U l        [4        R6                  " 5       U l        [4        R:                  " U R<                  [?        5       4S9U l         SU R@                  l!        U R@                  RE                  5         g s  snf s  snf s  snf s  snf s  snf s  snf r   )#r+   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r[   r-   rM   (_set_max_memory_map_allocation_pool_sizer  r   r9   rG   r;   r   rO   rP   rQ   r   r   r   rN   r   r   r   s     r"   r   (_DataLoaderIterMultiProcess._init_thread  s   +/??;?a66?;)-9A9==48OO$DOqUO$DD!6:oo6E#AGG,oDL
 37//%2AQ&&(/%D! .2__=_GG_=DL#DDMMOT77T\\9JQ9N 
 	55--	
 ,,  OOLLLL!!LL##$$
 #,//"3 ''$$,C,E+G
 #M <9$D% >s"   JJ4JJ
#JJc                 v   U R                      U R                  U l        [        U R                  5       H>  nU R                  U   R                  [        5       5        U =R                  S-  sl        M@     S S S 5        U R                  S:  a(  [        R                  " S5        U R                  S:  a  M(  U R                  R                  5       [        U R                  5      :  a  [        5       (       a;  [        R                   R#                  U R$                  R'                  5       S   5      nOFU R(                  (       a  U R$                  R'                  5         OU R$                  R+                  5       nU R                  R                  5       [        U R                  5      :  a  M  SU l        SU l        SU l        0 U l        / U l        S/U R                  -  U l        [7        U R8                  5      U l        [        U R<                  5       H  nU R?                  5         M     g ! , (       d  f       GN= f)Nr   r   g      ?T) r   r7   r   rZ   r  putr   r   r   r   rM   sizer[   r-   r   r
   r   r   r   r   r/   r   r   r   r   r   r  rH   rI   rJ   r   r  )rR   	worker_idr   r   s       r"   _reset"_DataLoaderIterMultiProcess._reset"  s    &*&7&7D#"4#4#45	$$Y/334D4FG))Q.) 6  %%)JJsO %%) ""'')S->>  zz77LL//1!4 $$LL//1<<113D ""'')S->> $%! "  $ft'8'88 "$"5"56t112A!!# 3I s   A)H))
H8c                     U[        U R                  5      :  a\  U R                  U   (       d  U R                  (       a6  U(       a.  U R                  U   R	                  S 5        SU R                  U'   g g g g r|   )r[   r  r   r  r0  )rR   r2  r   s      r"   _shutdown_worker,_DataLoaderIterMultiProcess._shutdown_workerM  sg    s4..//	*''  +//5-2D	*  ( 0r!   c                 h   U R                   (       d   U R                  5         U R                  5         U R                  R	                  5         [        U R                  5       H  nU R                  USS9  M     U R                   (       dW  U R                   H  nUR                  U5        M     U R                   H#  nUR                  5         UR                  5         M%     [        R                  " [        U 5      5        SU l         g g ! [        R                  " [        U 5      5        SU l         f = f)NT)r   )r   rk   r*  r   ri   rZ   r7   r6  r  r   r  r!  rj   r
   _erase_process_pidsr   )rR   r@   r   r  qs        r"   r   -_DataLoaderIterMultiProcess._try_shutdown_allV  s    ~~&,,.113
 ((,,.t001A))!d); 2 ~~!]]w +!11,,.	 2 ((D2!%) & ((D2!%s   CD	 	(D1c                    [         R                  " S[        [        U 5      5      -   5        [	        U5        U R
                  R                  5       (       Gd  U R                  5       nU R
                  R                  5       (       Gd  Uc  U R                  5         GOt[        U[        5      (       a)  U R                  S:  d   eU =R                  S-  sl        M   [         R                  " 5       nU R                  (       a  U H  nUR                  U5        M     OU H  n[        U[        R                   5      (       a  UR#                  5       nO[[        U[         R$                  5      (       d<  [         R$                  " 5       nUR'                  U[         R(                  " 5       5        UnUR                  U5        M     U R*                  R-                  U5      (       d  U R*                  R/                  5         U =R4                  S-  sl        U R
                  R                  5       (       d  GM  g g ! [0         a  nU R3                  5         UeS nAff = f! U =R4                  S-  sl        f = f)Nr   r   r   )r
   r   r   r   r   rQ   r   	_get_datark   r   r   r   r   r?   r   r   r   r   r   ri   r   rM   r   rj   r   ro   r   )rR   r   r   r   tensorr   r   r   s           r"   r   (_DataLoaderIterMultiProcess._thread_loopm  s    	$$]SD]%BC12))0022NN$E**1133=002!%)9::#66::://14/ , $ 5 5 722*/ %V 4 +0
 ).#-dFMM#B#B+/??+<D)3D$:J:J)K)K*.*:*:*<C$'GGD$--/$B+.D %T 2 ).  $3388?? 00668
 !+E ))0022< %  668  !+s%   D H4 4
I>III I/c                 (	   U R                   R                  5       (       Gd  U R                  [        R                  :X  a  U R
                  U R                  :  a  U R                  U R
                     n[        U5      S:X  d  U R                  US      (       a  OU R                  U R
                  	 U =R
                  S-  sl        U =R                  S-  sl
        U R
                  U R                  :  a  M  U R                  (       d$  U R                  [        U R                  5      :  a  g U R
                  U R                  ;   an  [        U R                  U R
                     5      S:X  aH  U R                  R                  U R
                  5      nU R                  R                  US   5        US   $  U R                   R#                  U R$                  S9nU R                  [        R                  :X  a  ['        U[(        5      (       an  U R                  (       a  SU R                  UR*                  '   O0U R-                  UR*                  5        U =R                  S-  sl
        U R/                  5         GMw  Uu  p4n['        U[0        5      (       a  Uc  Uc  U$ ['        U[2        5      (       a   U R5                  5         UR7                  5         X0R
                  :X  a9  X0R                  ;   a  U R                  U	 U R                  R                  U5        U$ U R                  U==   XE4-  ss'   GM1  g ! [8         GaS  nU R                   R                  5       (       a   S nAGMc  / n[;        U R<                  5       HT  u  pU R                  U   (       d  M  U	R?                  5       (       a  M2  UR                  U	5        U R-                  U5        MV     [        U5      S:  aR  U R5                  5         SRA                  S U 5       5      n
[B        RD                  " S	[        U5       S
U
 35         S nAg ['        U[F        [H        RJ                  45      (       a   S nAGM_  U R5                  5         [B        RL                  " SU S35        UeS nAff = f)Nr	   r   r   r   )r@   Fz, c              3   L   #    U  H  n[        UR                  5      v   M     g 7fr   )r   r  r  s     r"   r  8_DataLoaderIterMultiProcess._get_data.<locals>.<genexpr>  s     $HASZZs   "$zDataLoader z" workers exit unexpectedly, pids: z DataLoader reader thread failed(z*) to read data from workers' result queue.)'rQ   r   rE   r   ITERr   r   r   r[   r  r   r   r-   r   r   r   r   r  rA   r   r   r2  r6  r  r   r   ro   reraiser   	enumerater  r   r   loggingwarningIOErrorqueueEmptyerror)rR   infor   idxr   r   r   failed_workersr   r  pidss              r"   r=  %_DataLoaderIterMultiProcess._get_data  s   ))0022 !!\%6%66nnt~~5++DNN;D4yA~)<)<T!W)E((8NNa'N--2- nnt~~5&  33  44s4<<7HH#' $"2"22((89Q>''++DNN;%%,,T!W5AwN ''++DMM+BB %%):)::z7@ @ //>C++DNN;--dnn=11Q61))+(,%I s$455!)Je%566224MMO..(... ,,S1))00; L$$S)e-??)q 3h  **1133 "$%dmm4DA**1--ajjll&--a0--a0 5 ~&*22499$H$HHDOO%c.&9%: ;!!%(  a'5;;!788..06qc :- - =s7   4#L3 3R>R$.RR-BR4%R ,RRc                 l   U R                   U R                  ::  d   S5       eU R                      [        U R                  5      n[        U R                  5       H.  n[        U R                  5      nU R                  U   (       d  M.    O    S S S 5        g U R                  U   R                  U R                  U45        U4U R                  U R                  '   U =R                   S-  sl         U =R                  S-  sl        S S S 5        g ! [
         a     S S S 5        g f = f! , (       d  f       g = f)Nz'too many indices have been put to queuer   )r   r   r   r   rJ   r   rZ   r7   r  r  r  r0  r   r   )rR   r   r   
worker_idxs       r"   r  ,_DataLoaderIterMultiProcess._try_put_indices  s   ((D,F,FF 	
5	
F t112 4,,-!$"9"9:
&&z22 .
     ,00$..'1JK0:}DT^^,%%*%NNaN!  ! 	  s;   D%D?D%D%A.D%
D"D%!D""D%%
D3c                 $    U R                  5         g r   r   r\   s    r"   r   #_DataLoaderIterMultiProcess.__del__4  r   r!   c                 &    U R                  S5        g rW   r   r\   s    r"   _shutdown_on_exit-_DataLoaderIterMultiProcess._shutdown_on_exit7  s    q!r!   c                 D   [        5       (       a=  [        R                  " S[        R                  R                  S9nUR                  5          [        5       R                  U 5        [        5       R                  5         U R                  [        U R                  5      :  aK  U R                  (       a  [        eU R                  R                  5         U R                   R#                  5         [%        5       (       a`  [&        R(                  R+                  U R,                  R/                  5       S   5      n[1        X R2                  R5                  S5      5      nGOU R6                  (       a  U R,                  R/                  5       n[9        [        U5      5       H  nX#   R;                  5       X#'   M     [9        [        U R                  5      5       Vs/ s H  nU R2                  R5                  S5      PM      nn[=        X%5       VVs/ s H  u  pg[1        Xg5      PM     nnn[        U R                  5      S:X  a  US   nOU R,                  R?                  5       nU RA                  5         [        5       RC                  5         U[        5       (       a  WRE                  5         $ $ s  snf s  snnf ! [         a=    U R                  (       d*  U R,                  RG                  5         U RI                  5         e f = f! [        5       (       a  WRE                  5         f f = f)Nr   r   r   r   )%r   r   r   r   r   r   r   r   r   r   r[   r-   r   r   rQ   ri   rM   rj   r   r
   r   r   r   r   r   r   r   r/   rZ   r   r   r   _on_output_batchr   r   r   r   r   s           r"   rc   $_DataLoaderIterMultiProcess.__next__:  sd   "..2#33>>K 1	"K,,T2K%%' ((3t||+<<++''++//1((..0  zz77LL//1!4 &d,A,A,E,Ea,HI$$<<668D"3t9-"&'"7"7"9 . "'s4<<'8!9!9A --11!4!9   >A=OP=OTQN10=ODP 4<<(A-#Aw<<113D!!#K$$&  !!! "+ Q  	++%%'&&(		  !!! "s9   FJ3 %J(;J3 J-"A%J3 (J3 3AK::K= ="Lc                     [        [        U R                  5      5       H(  nU =R                  S-  sl        U R	                  5         M*     g rW   )rZ   r[   r-   r   r  r   s     r"   rZ  ,_DataLoaderIterMultiProcess._on_output_batcht  s7    s4<<()A%%*%!!# *r!   )r  r   rM   r   r   r  r  r   r   r   r   r   r   rJ   r   r   r   r   r   rN   rQ   r   r   r  r  r  r   r  )Fr   )rq   rr   rs   rt   rT   r  r*  r   r3  r6  r   r   r=  r  r   rW  rc   rZ  rw   r   r   s   @r"   r   r   v  sW    FP.`'R)$V3&.+,Zyv >!"8"t$ $r!   r   )1r  rF  r  rI  r  rO   r   r	  numpyr   r   r   paddle.base.frameworkr   r   paddle.pir.corer   paddle.profiler.timerr   paddle.profiler.utilsr   	frameworkr
   r   r   multiprocess_utilsr   r   r   r0   r   collater   r   flatr   r   r&  r   r   r   r   r   r   r#   registerr%   ry   r   r    r!   r"   <module>rh     s      	  
       N / + 2 ; ; 
 4 ; 0 .    m ,G( G(TX!#6 X!vA$"5 A$r!   