[26263] 2020-09-24_一文讲透“进程、线程、协程”

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-19
2020-09-24_一文讲透“进程、线程、协程”   线 L i n u x   2 0 2 0 - 0 9 - 2 4   线 P y t h o n 线 线 . . . - , ) I O O S C P U   .
P C B ( P r o c e s s i n g   C o n t r o l   B l o c k ) P C B ( , , , ) P C B 5 C P U C P U C P U c o n t e x t   s w i t c h C P U 使 C P U C P U 使 C P U  
I / O 使 C P U C P U   C P U I / O C P U C P U V M 使   使 C P U 访 p y t h o n m u l t i p r o c e s s i n g i m p o r t   m u l t i p r o c e s s i n g i m p o r t   t h r e a d i n g i m p o r t   t i m e n   =   0
n p { 0 , 1 , 2 , 3 , 4 } m a i n 线 线 线 - 线 线 线 线 n   =   0 d e f   c o u n t ( n u m ) :         g l o b a l   n         f o r   i   i n   r a n g e ( 1 0 0 0 0 0 ) :                 n   + =   i         p r i n t ( " P r o c e s s   { 0 } : n = { 1 } , i d ( n ) = { 2 } " . f o r m a t ( n u m ,   n ,   i d ( n ) ) ) i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' :         s t a r t _ t i m e   =   t i m e . t i m e ( )                 p r o c e s s   =   l i s t ( )         f o r   i   i n   r a n g e ( 5 ) :                 p   =   m u l t i p r o c e s s i n g . P r o c e s s ( t a r g e t = c o u n t ,   a r g s = ( i , ) )   #   使                 #   p   =   t h r e a d i n g . T h r e a d ( t a r g e t = c o u n t ,   a r g s = ( i , ) )     #   线 使                 p r o c e s s . a p p e n d ( p )         f o r   p   i n   p r o c e s s :                 p . s t a r t ( )         f o r   p   i n   p r o c e s s :                 p . j o i n ( )         p r i n t ( " M a i n : n = { 0 } , i d ( n ) = { 1 } " . f o r m a t ( n ,   i d ( n ) ) )         e n d _ t i m e   =   t i m e . t i m e ( )         p r i n t ( " T o t a l   t i m e : { 0 } " . f o r m a t ( e n d _ t i m e   -   s t a r t _ t i m e ) ) P r o c e s s   1 : n = 4 9 9 9 9 5 0 0 0 0 , i d ( n ) = 1 3 9 8 5 4 2 0 2 0 7 2 4 4 0 P r o c e s s   0 : n = 4 9 9 9 9 5 0 0 0 0 , i d ( n ) = 1 3 9 8 5 4 3 2 9 1 4 6 0 6 4 P r o c e s s   2 : n = 4 9 9 9 9 5 0 0 0 0 , i d ( n ) = 1 3 9 8 5 4 2 0 2 0 7 2 4 0 0 P r o c e s s   4 : n = 4 9 9 9 9 5 0 0 0 0 , i d ( n ) = 1 3 9 8 5 4 2 0 1 6 1 8 9 6 0 P r o c e s s   3 : n = 4 9 9 9 9 5 0 0 0 0 , i d ( n ) = 1 3 9 8 5 4 2 0 2 0 6 9 3 2 0 M a i n : n = 0 , i d ( n ) = 9 4 6 2 7 2 0 T o t a l   t i m e : 0 . 0 3 1 3 8 2 5 6 0 7 2 9 9 8 0 4 7
P C B 线 线 T C B T h r e a d   C o n t r o l   B l o c k , 线 线 T C B 线 线 线 线 , 线 线   V S   线 线 线 线 C P U 线 线 线
线 线 线 线 p y t h o n 线 线 线 线 C o r o u t i n e 线 线 线 线 线 线 线 I O I O y i e l d 线 线 使 P y t h o n 线
p y t h o n 线 ( " " 线 ) P y t h o n 线 线 m u l t i p r o c e s s i n g , n M a i n 线 线 线 线 < < C p y t h o n p y t h o n G I L ( G l o b a l   I n t e r p r e t e r   L o c k , ) G I L G I L P y t h o n ( ) 线 G I L   G I L   ,   P y t h o n G I L   , 线 ,   C P U   C p y t h o n 0 线 线 0 线 1 线 a 线 a 使 a G I L , 线 (   G I L   线 ) C P U P y t h o n   线 p = m u l t i p r o c e s s i n g . P r o c e s s ( t a r g e t = c o u n t , a r g s = ( i , ) ) p = t h r e a d i n g . T h r e a d ( t a r g e t = c o u n t , a r g s = ( i , ) ) P r o c e s s   0 : n = 5 7 5 6 6 9 0 2 5 7 , i d ( n ) = 1 4 0 1 0 3 5 7 3 1 8 5 6 0 0 P r o c e s s   2 : n = 1 0 8 1 9 6 1 6 1 7 3 , i d ( n ) = 1 4 0 1 0 3 5 7 3 1 8 5 6 0 0 P r o c e s s   1 : n = 1 1 8 2 9 5 0 7 7 2 7 , i d ( n ) = 1 4 0 1 0 3 5 7 3 1 8 5 6 0 0 P r o c e s s   4 : n = 1 7 8 1 2 5 8 7 4 5 9 , i d ( n ) = 1 4 0 1 0 3 5 7 3 0 7 2 9 1 2 P r o c e s s   3 : n = 1 4 4 2 4 7 6 3 6 1 2 , i d ( n ) = 1 4 0 1 0 3 5 7 3 1 8 5 6 0 0 M a i n : n = 1 7 8 1 2 5 8 7 4 5 9 , i d ( n ) = 1 4 0 1 0 3 5 7 3 0 7 2 9 1 2 T o t a l   t i m e : 0 . 1 0 5 6 2 1 0 9 9 4 7 2 0 4 5 9
P y t h o n 使 C P U : C P U I / O : I / O s o c k e t C P U + I / O C P U m u l t i p r o c e s s i n g t h r e a d i n g   >   线 I / O I / O D M A D M A D M A ( D i r e c t   M e m o r y   A c c e s s ) C P U p 1 C P U D M A C P U p 2 D M A D M A C P U C P U p 2 p 1 , p 1
P y t h o n 线 线 I / O 线 T h r e a d 0 线 T h r e a d 1 G I L T h r e a d 0 I / O D M A , D M A T h r e a d 1 C P U C P U D M A T h r e a d 0 G I L 线 I O 线 I / O i m p o r t   m u l t i p r o c e s s i n g i m p o r t   t h r e a d i n g i m p o r t   t i m e
线 I / O 线 P y t h o n a s y n c i o 使 a s y n c / a w a i t 使 d e f   c o u n t ( n u m ) :         t i m e . s l e e p ( 1 )     # #   I O         p r i n t ( " P r o c e s s   { 0 }   E n d " . f o r m a t ( n u m ) ) i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' :         s t a r t _ t i m e   =   t i m e . t i m e ( )         p r o c e s s   =   l i s t ( )         f o r   i   i n   r a n g e ( 5 ) :                 p   =   m u l t i p r o c e s s i n g . P r o c e s s ( t a r g e t = c o u n t ,   a r g s = ( i , ) )                 #   p   =   t h r e a d i n g . T h r e a d ( t a r g e t = c o u n t ,   a r g s = ( i , ) )                 p r o c e s s . a p p e n d ( p )         f o r   p   i n   p r o c e s s :                 p . s t a r t ( )         f o r   p   i n   p r o c e s s :                 p . j o i n ( )         e n d _ t i m e   =   t i m e . t i m e ( )         p r i n t ( " T o t a l   t i m e : { 0 } " . f o r m a t ( e n d _ t i m e   -   s t a r t _ t i m e ) ) # #   P r o c e s s   0   E n d P r o c e s s   3   E n d P r o c e s s   4   E n d P r o c e s s   2   E n d P r o c e s s   1   E n d T o t a l   t i m e : 1 . 3 8 3 1 9 3 0 1 6 0 5 2 2 4 6 # #   线 P r o c e s s   0   E n d P r o c e s s   4   E n d P r o c e s s   3   E n d P r o c e s s   1   E n d P r o c e s s   2   E n d T o t a l   t i m e : 1 . 0 0 3 4 2 5 1 2 1 3 0 7 3 7 3 i m p o r t   t i m e i m p o r t   a s y n c i o
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则