python 프로 세 스 의 상태,생 성 및 사용 방법 에 대한 상세 한 설명

4797 단어 python프로 세 스
이 사례 는 python 프로 세 스 의 상태,생 성 및 사용 방법 을 설명 합 니 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
프로 세 스 및 상태
1.프로 세 스
프로그램:예 를 들 어 xxx.py 는 프로그램 이 고 정적 입 니 다.
프로 세 스:프로그램 이 실 행 된 후 코드+사용 하 는 자원 을 프로 세 스 라 고 합 니 다.운영 체제 에서 자원 을 분배 하 는 기본 단원 입 니 다.
스 레 드 를 통 해 다 중 작업 을 수행 할 수 있 을 뿐만 아니 라 프로 세 스 도 가능 합 니 다.
2.프로 세 스 의 상태
작업 중,작업 수 는 cpu 의 핵 수 보다 많 습 니 다.즉,일부 작업 이 실행 되 고 있 고,다른 작업 은 cpu 가 실행 되 기 를 기다 리 고 있 기 때문에 서로 다른 상 태 를 초래 합 니 다.
  • 준비 상태:실행 조건 이 느 려 졌 습 니 다.cpu 에서 실행 되 기 를 기다 리 고 있 습 니 다
  • 실행 상태:cpu 가 그 기능 을 수행 하고 있 습 니 다
  • 대기 상태:어떤 조건 이 만족 되 기 를 기다 리 고 있 습 니 다.예 를 들 어 프로그램 sleep 이 있 습 니 다.이때 대기 상태
  • 에 있 습 니 다.
    프로 세 스 생 성-multiprocessing
    multiprocessing 모듈 은 크로스 플랫폼 버 전의 다 중 프로 세 스 모듈 로 하나의 process 류 를 제공 하여 프로 세 스 대상 을 대표 합 니 다.이 대상 은 독립 된 프로 세 스 로 이해 할 수 있 고 다른 일 을 수행 할 수 있 습 니 다.
    1.while 2 개 반복 하기
    
    # -*- coding:utf-8 -*-
    from multiprocessing import Process
    import time
    def run_proc():
      """         """
      while True:
        print("----2----")
        time.sleep(1)
    if __name__=='__main__':
      p = Process(target=run_proc)
      p.start()
      while True:
        print("----1----")
        time.sleep(1)
    
    
    설명 하 다.
  • 하위 프로 세 스 를 만 들 때 실행 함수 와 함수 의 인 자 를 입력 하고 process 인 스 턴 스 를 만 들 고 start()방법 으로 시작 합 니 다
  • 2.프로 세 스 pid
    
    # -*- coding:utf-8 -*-
    from multiprocessing import Process
    import os
    import time
    def run_proc():
      """         """
      print('      ,pid=%d...' % os.getpid()) # os.getpid          
      print('       ...')
    if __name__ == '__main__':
      print('   pid: %d' % os.getpid()) # os.getpid          
      p = Process(target=run_proc)
      p.start()
    
    
    3.프로 세 스 문법 구 조 는 다음 과 같다.
    Process([group [, target [, name [, args [, kwargs]]]]])
  • target:함수 의 인용 을 전달 하면 이 하위 프로 세 스 가 이 코드 를 실행 할 수 있 습 니 다
  • args:target 이 지정 한 함수 에 전달 하 는 매개 변 수 는 원 그룹의 방식 으로 전달 합 니 다
  • kwargs:target 이 지정 한 함수 에 이름 매개 변 수 를 전달 합 니 다
  • name:프로 세 스에 이름 을 설정 합 니 다.설정 하지 않 아 도 됩 니 다
  • group:프로 세 스 그룹 을 지정 합 니 다.대부분의 경우 사용 되 지 않 습 니 다
  • Process 가 만 든 인 스 턴 스 대상 의 일반적인 방법:
  • start():하위 프로 세 스 시작 실례(하위 프로 세 스 생 성)
  • is_alive():프로 세 스 하위 프로 세 스 가 살아 있 는 지 판단 하기
  • join([timeout]):하위 프로 세 스 가 끝 날 때 까지 기다 리 거나 몇 초 를 기다 릴 지 여부
  • terminate():작업 이 완료 되 었 든 안 되 었 든 하위 프로 세 스 를 즉시 종료 합 니 다
  • Process 가 만 든 인 스 턴 스 대상 의 일반적인 속성:
  • name:현재 프로 세 스 의 별명 입 니 다.기본 값 은 Process-N 이 고 N 은 1 부터 증가 하 는 정수 입 니 다
  • pid:현재 프로 세 스 의 pid(프로 세 스 번호)
  • 4.하위 프로 세 스에 지정 한 함수 전달 매개 변수
    
    # -*- coding:utf-8 -*-
    from multiprocessing import Process
    import os
    from time import sleep
    def run_proc(name, age, **kwargs):
      for i in range(10):
        print('      ,name= %s,age=%d ,pid=%d...' % (name, age, os.getpid()))
        print(kwargs)
        sleep(0.2)
    if __name__=='__main__':
      p = Process(target=run_proc, args=('test',18), kwargs={"m":20})
      p.start()
      sleep(1) # 1    ,       
      p.terminate()
      p.join()
    
    
    실행 결과:
    하위 프로 세 스 실행 중,name=test,age=18,pid=45097...
    {'m': 20}
    하위 프로 세 스 실행 중,name=test,age=18,pid=45097...
    {'m': 20}
    하위 프로 세 스 실행 중,name=test,age=18,pid=45097...
    {'m': 20}
    하위 프로 세 스 실행 중,name=test,age=18,pid=45097...
    {'m': 20}
    하위 프로 세 스 실행 중,name=test,age=18,pid=45097...
    {'m': 20}
    5.프로 세 스 간 에 전역 변 수 를 공유 하지 않 습 니 다.
    
    # -*- coding:utf-8 -*-
    from multiprocessing import Process
    import os
    import time
    nums = [11, 22]
    def work1():
      """         """
      print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums))
      for i in range(3):
        nums.append(i)
        time.sleep(1)
        print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums))
    def work2():
      """         """
      print("in process2 pid=%d ,nums=%s" % (os.getpid(), nums))
    if __name__ == '__main__':
      p1 = Process(target=work1)
      p1.start()
      p1.join()
      p2 = Process(target=work2)
      p2.start()
    
    
    실행 결과:
    in process1 pid=11349 ,nums=[11, 22]
    in process1 pid=11349 ,nums=[11, 22, 0]
    in process1 pid=11349 ,nums=[11, 22, 0, 1]
    in process1 pid=11349 ,nums=[11, 22, 0, 1, 2]
    in process2 pid=11350 ,nums=[11, 22]
    파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
    본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기