동시 프로세스 - Process 객체의 메소드 속성

2531 단어 python 기본 노트

문서 목록

  • join방법
  • 프로세스 대상의 다른 방법 1:terminate와 isalive
  • 프로세스 대상의 기타 속성:name와pid
  • join 방법


    주 프로세스가 하위 프로세스가 실행되었는지 확인하고 하위 프로세스가 실행된 후에야 계속 실행합니다. 그렇지 않으면 제자리에서 계속 막힙니다
    def test(name):
        print('%s is running' % name)
        time.sleep(3)
        print('done')
    
    if __name__ == '__main__':
        p1 = Process(target=test, args=('p1',))
        p1.start()
        p1.join()  #  
        print(' ')
    
    
    # p1 is running
    # done
    #  
    
    
     join :
    #  
    # p1 is running
    # done
    
    

    다시 한 번 보십시오. 여러 개의 하위 프로세스의 병렬인지 직렬인지 검사합니다. 만약 직렬이라면 하위 프로세스가 끝난 후에 실행될 것입니다. 실행 시간은 총계이고, 병렬이라면 실행 시간은 가장 긴 것입니다.
    def test(name, n):
        print('%s is running' % name)
        time.sleep(n)  #  
        print('done')
    
    if __name__ == '__main__':
        start = time.time()  # 
        p1 = Process(target=test, args=('p1', 3))
        p2 = Process(target=test, args=('p2', 5))
        p3 = Process(target=test, args=('p3', 2))
        p1.start()
        p2.start()
        p3.start()
        p1.join()
        p2.join()
        p3.join()
        print(' ')
        print(time.time()-start)  #  
    
    
    
    # p1 is running
    # p2 is running
    # p3 is running
    # done
    # done
    # done
    #  
    # 5.219203472137451
    

    이를 통해 알 수 있듯이join 방법은 메인 프로세스로 하여금 대기를 감지하게 하고 세 개의 하위 프로세스가 운영체제에 신호를 보낸 후에 동시에 실행하는 것이다.다음과 같은 경우에는 직렬입니다.
    
    def test(name, n):
        print('%s is running' % name)
        time.sleep(n)
        print('done')
    
    if __name__ == '__main__':
        start = time.time()
        p1 = Process(target=test, args=('p1', 3))
        p2 = Process(target=test, args=('p2', 5))
        p3 = Process(target=test, args=('p3', 2))
        p1.start()
        p1.join()
        p2.start()
        p2.join()
        p3.start()
        p3.join()
        print(' ')
        print(time.time()-start)
    
    
    # p1 is running
    # done
    # p2 is running
    # done
    # p3 is running
    # done
    #  
    # 10.628840684890747
    
    

    프로세스 대상의 다른 방법 1:terminate와 isalive


    terminate 신호를 운영체제에 보내서 프로세스를 닫습니다. 운영체제는 반응 시간이 필요합니다. 즉시 닫지 않습니다. isalive 가 아직 있는지 확인하고 True 또는 False 로 돌아갑니다.

    프로세스 대상의 다른 속성:name과pid


    name 보기 속성 이름,pid 보기 프로세스 번호
    def test(name, n):
        print('%s is running' % name)
        time.sleep(n)
        print('done')
    
    if __name__ == '__main__':
        start = time.time()
         p1 = Process(target=test, args=('p1', 3),name=' 1')
        ) # 
        p1.start()
    
        print(p1.name,p1.pid,)
    

    좋은 웹페이지 즐겨찾기