멀티스레딩은 여러 프로그램을 동시에 실행하는 것과 유사하며 다음과 같은 장점이 있습니다. (추천 학습 : 웹 프런트 엔드 비디오 튜토리얼)
스레드를 사용하면 장기적인 프로그램 작업을 백그라운드로 처리할 수 있습니다.
사용자 인터페이스가 더 매력적일 수 있습니다. 예를 들어 사용자가 버튼을 클릭하여 특정 이벤트의 처리를 시작하면 진행률 표시줄이 팝업되어 처리 진행 상황을 표시할 수 있습니다.
프로그램이 더 빠르게 실행될 수 있습니다.
스레드는 사용자 입력, 파일 읽기 및 쓰기, 네트워크 데이터 전송 및 수신과 같은 일부 대기 작업을 구현하는 데 더 유용합니다. 이 경우 메모리 사용량 등과 같은 일부 귀중한 리소스를 해제할 수 있습니다.
각 독립 스레드에는 프로그램 실행을 위한 입구, 순차적 실행 시퀀스 및 프로그램 종료가 있습니다. 그러나 스레드는 독립적으로 실행될 수 없으며 응용 프로그램 내에 존재해야 하며 응용 프로그램은 다중 스레드 실행 제어를 제공합니다.
각 스레드에는 스레드 컨텍스트라고 하는 고유한 CPU 레지스터 세트가 있으며, 이는 스레드가 마지막으로 실행한 CPU 레지스터의 상태를 반영합니다.
명령 포인터와 스택 포인터 레지스터는 스레드 컨텍스트에서 가장 중요한 두 가지 레지스터입니다. 스레드는 항상 프로세스 컨텍스트에서 실행됩니다. 이 주소는 해당 프로세스를 소유하는 프로세스의 주소 공간을 표시하는 데 사용됩니다. 스레드.
스레드는 선점(중단)될 수 있습니다.
다른 스레드가 실행 중인 동안 스레드가 일시적으로 보류(휴면 상태라고도 함)될 수 있습니다. 이를 스레드 백오프라고 합니다.
스레드는 다음과 같이 나눌 수 있습니다.
커널 스레드: 운영 체제 커널에 의해 생성 및 취소됩니다.
사용자 스레드: 커널 지원 없이 사용자 프로그램에 구현된 스레드입니다.
Python3 스레드에서 일반적으로 사용되는 두 가지 모듈은 다음과 같습니다.
_thread
threading(권장)#🎜 🎜 #
thread 모듈은 더 이상 사용되지 않습니다. 사용자는 대신 스레딩 모듈을 사용할 수 있습니다. 따라서 "thread" 모듈은 Python3에서 더 이상 사용할 수 없습니다. 호환성을 위해 Python3에서는 스레드 이름을 "_thread"로 변경했습니다.Python 스레드 학습 시작
Python에서 스레드를 사용하는 방법에는 두 가지가 있습니다: 스레드 개체를 래핑하는 함수 또는 클래스입니다. 기능: _thread 모듈에서 start_new_thread() 함수를 호출하여 새 스레드를 생성합니다. 구문은 다음과 같습니다:_thread.start_new_thread ( function, args[, kwargs] )
#!/usr/bin/python3 import _thread import time # 为线程定义一个函数 def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print ("%s: %s" % ( threadName, time.ctime(time.time()) )) # 创建两个线程 try: _thread.start_new_thread( print_time, ("Thread-1", 2, ) ) _thread.start_new_thread( print_time, ("Thread-2", 4, ) ) except: print ("Error: 无法启动线程") while 1: pass
위 내용은 python3 멀티스레딩의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!