차이 및 관련 프로세스와 스레드

프로세스 (과정) 란 무엇입니까?

프로그램 실행 인스턴스는 프로세스라고합니다. (이 프로세스는 자원들의 집합이다)

각 프로세스는 프로세스가 가상 메모리 주소 공간, 실행 코드, 공동 보안 컨텍스트의 운영 시스템을 호출 (권한)이이 절차를 수행하는 데 필요한 자원을 제공

유일한 프로세스 식별자 PID, 우선 순위 클래스, 최소 및 최대 작업 메모리 공간을 구현하는 프로세스는 하나 개 이상의 스레드 (시간에있어서, 적어도 하나 개의 스레드) 프로세스는 일반적으로 첫 번째 스레드를 필요 (스레드는 하위 하위 스레드, 모두 전달 아무 제휴를 만들 수 있습니다, 아이 thread)는 메인 쓰레드라고하지만, 메인 스레드는 추가 스레드를 만들 수 있습니다.

프로세스와 스레드의 차이점은 무엇입니까?

스레드는 프로세스보다 더 빨리 시작하지만, 두 가지의 실행 속도는 비교할 수 없습니다.

1. 쓰레드 공유 메모리 공간 사이의 메모리 공간은, 처리는 독립적이다.

2. 두 개의 스레드를 직접 공유 메모리 공간의 과정에서 데이터에 액세스 할 수 있습니다. 여러 하위 프로세스간에 데이터를 공유하지 않는 동일한 데이터에 대한, 그들은 서로 완전히 독립적으로 부모 프로세스를 복사합니다.

이 스레드 3 (공유 데이터, 정보의 송신 등 관련) 방법, 복수간에 직접 상호 작용할 수있다. 두 프로세스는 통신을 중간 프록시를 통해 달성되어야 원한다.

4. 새로운 스레드가 생성하는 것은 매우 쉽습니다, 새로운 프로세스를 생성하는 것은 부모 프로세스의 복제 할 필요가있다.

5. 스레드 제어하고 동일한 프로세스에서 다른 스레드의 작업을하지만, 프로세스는 그 아이를 작동 할 수 있습니다.

메인 스레드의 변화 6. 부모 프로세스에 대한 다른 스레드의 동작 (그들은 데이터를 공유하기 때문에)에 영향을 줄 수있는 수정을 다른 하위 프로세스 데이터에 영향을주지 않습니다 (그러나 부모 프로세스가 삭제 , 아이가 영향을 받게됩니다)

또한, 메인 스레드와 자식 스레드는 평행 계산 시간없이 연속 시간 (순서)의 관계를 시작한다. 

더 잘 이해하기 위해 :

1. 이해 동시성

. (1)  오기 스레딩
 2  오기 시간
 3.  
4.  DEF RUN (N-)
 . 5      인쇄 ( " 작업 " , N-)
 . 6      time.sleep (2 )
 . 7  
. 8  # 두 프로그램의 스레드의 동시 실행이 2 초 총 대기 
9. T1 = 스레딩. 스레드 (목표 = RUN, 인수의 = ( " T1 " ))
 10 threading.Thread =의 T2 (목표 = RUN, 인수의 = ( " T2 " ))
 . 11  t1.start ()
 (12)는  t2.start ()
 (13)는  
14  # 대비 
15  #을4초 모두 직렬 실행 
16  # RUN ( "T1") 
. 17  # RUN ( "T2")
2. #은 동시성의 클래스를 호출의 양식을 계승
1  # 상속 호출 동시성의 클래스로 
2  오기 스레딩
 3.  오기 시간
 4.  
5 개.  클래스 합니다 (threading.Thread에) MyThread :
 . 6      DEF  __init__ (자기, N-, SLEEP_TIME)
 . 7          . 슈퍼합니다 (MyThread,자가) __init__ ()
 . (8)          = self.n N-
 . 9          self.sleep_time는 = SLEEP_TIME
 10  
(11).      DEF RUN (자동) :
 (12)는          인쇄 ( " 작업 실행 " , self.n가)
 (13)는          time.sleep (self.sleep_time)
 (14)         인쇄 ( ' 작업 완료 ' , self.n)
 15  
16 T1 = MyThread ( ' T1 ' , 2 )
 . 17 T2 = MyThread ( ' T2 ' . 4) #의 T1 및 대기 시간 (t2)이 일치하고, 메인 쓰레드 계산 시간 모두 필요한 가입 
18이다  
. 19  t1.start ()를
 20 인  t2.start ()
 (21)가  
22  t1.join ()
 23 인  t2.join ()
 24  
25  인쇄 ( ' 주 스레드가 ... ' )

동시 멀티 사이클 3.for

주요 스레드와 자식 스레드가 동시에 활성화, 모두 순서가 완료되지 않습니다.

어떤이 가입하면 자식 스레드가 아래로 실행 전에 완료 될 때까지, 메인 스레드는 대기하지 않습니다

 

. 1  가져 오기 스레딩
 2  가져 오기 시간
 3.  
4.  DEF RUN (N-)
 . 5      인쇄 ( " 작업 " , N-)
 . 6      time.sleep (2 )
 . (7)      인쇄 ( ' 작업 완료 ' , N-)
 . 8      인쇄 ( " ------ .. 스레드 완료 " , threading.current_thread ()) #의 스레드가 현재 실행 형 
. 9  
(10)  
. (11) START_TIME = 로 time.time ()을
 (12)는  # 동시 다중 루프 
13 t_objs = []#의 금고 실 인스턴스 
(14)  에 대한 I  범위 (50 ) :
 15  
16      threading.Thread (목표 = RUN, 인수의 = (의 T의 = " T- %의 S " %의 I))
 . (17)  
(18)는      t.setDaemon (참) # 현재 스레드는 스레드를 데몬 
19  
20      t.start ()
 (21)  
(22)      t_objs.append (t) #을 내부 목록을 넣어, 여기에 가입, 스레드 시작 뒤에 차단하지 아니하기 위해 
23  #
 24  # t_objs에서 t에 대한 #주기 인스턴스 목록을 스레드, 모든 스레드 대기 완료 
25  #      t.join () 
(26)  
(27)  인쇄 ( ".. 모든 스레드 ------있다 완료 " , threading.current_thread (), threading.active_count ()) #은 현재 나사의 종류와 활성 수보기 
(28)  인쇄 ( ' 비용 : ' ,로 time.time ()를 - START_TIME)은
 29  
30  # 비교 
(31)는  #의 RUN ( "T1") 
32  # RUN ( "T2")

데몬 스레드 :

모든 하위 쓰레드 프로그래밍 데몬 스레드 : 메인 스레드가 한 주 스레드가 종료 될 때, 당신이 종료 할 수 있습니다, 완료 후 모든 일상 종료를 기다리지 않습니다.

마지막 비 데몬 스레드가 종료 한 후, 프로그램이 데몬 스레드를 귀찮게하지 않을 때까지 메인 쓰레드가 종료의 끝을 기다리지 않습니다 메인 프로그램, 그것은 기다립니다.

데몬 스레드 시나리오 : 소켓 서버 설정

 

멀티 코어 : 여러 스레드가 동시에 실행 할 수 있습니다.

그러나 파이썬에서, 같은 시간에 당신은 단지 하나 개의 스레드를 실행할 수 있습니다. 파이썬 인터프리터는 직접 호출 스레드 C 언어, 전송의 맥락에 인터페이스. 첫 번째 스레드 실행하도록 제어 할 수없는 프로세스 스레드 실행, 파이썬

. 이 때문에, 통역자는 동시에 작업의 하나의 스레드 만이 유출을 제어뿐만 아니라, 하나의 스레드 만이 데이터를 얻을 수있다. (추가 글로벌 통역 잠금 ) (CPython과)

 

추천

출처www.cnblogs.com/bocaimao/p/10875778.html