English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
컴퓨터 과학에서 스레드는 운영 체제의 일부인 스케줄러가 독립적으로 관리할 수 있는 명령어 집합입니다.
스레드의 주요 기능은 여러 스레드를 동시에 실행하는 것입니다. 스레드는 다른 작업, 프로그램 내의 함수 호출 및 여러 스레드가 동시에 실행되는 것을 의미하지만, 다른 컴퓨터에서 실행되는 것은 아닙니다.
이 두 가지 경우에 다중 스레드를 사용합니다.
서브 프로그램의 출력이 메인 프로그램과 결합되어야 할 때.
메인 프로그램이 서로 독립된 코드를 포함할 때.
Python은 매우 강력한 스레드 모듈을 제공하며, 스레드에 대한 고급 지원도 제공합니다.
스레드 모듈은 스레드와 관련된 데이터를 가져오는 많은 함수를 정의하고, 이 함수들은 자동으로 실행됩니다.
threading.active_count()
이 함수는 현재 활성 Thread 객체의 개수를 반환합니다. 여기서 반환된 계산은 반환된 리스트의 길이와 같습니다.enumerate()
.
threading.current_thread()
이 함수는 현재 Thread 객체를 반환합니다. 이는 호출자의 제어 스레드와 일치합니다.
threading.get_ident()
이 함수는 현재 스레드의 "스레드 식별자"를 반환합니다. 이는 비ゼ로 정수입니다.
threading.enumerate()
此函数返回当前活动的所有Thread对象(包括守护线程)的列表,current_thread()函数创建虚拟线程和主线程,并排除终止的线程和尚未启动的线程。
이 함수는 현재 활동 중인 모든 Thread 객체(보호자 스레드 포함)의 목록을 반환합니다。current_thread() 함수는 가상 스레드와 메인 스레드를 생성하고, 종료된 스레드와 아직 시작되지 않은 스레드를 제외합니다。
threading.main_thread()
이 함수는 메인 스레드 객체를 반환합니다。
threading.settrace(func)run()
이 함수는 sys.settrace()에 각 스레드를 전달하기 전에 호출됩니다。
threading.setprofile(func)
모든 스레드를 시작한 후, 설정 파일 기능을 설정합니다.run()
이 함수는 sys.setprofile()에 각 스레드를 전달하기 전에 호출됩니다。
threading.stack_size([size])
이 함수는 스레드 스택 크기를 반환하고, 새 스레드를 생성할 때 사용됩니다。
스레드.TIMEOUT_MAX
이는 블록함수의 타임아웃 파라미터(Lock.acquire(),RLock.acquire(),Condition.wait() 등)의 최대값을 가진 상수입니다。
import threading def trace_function(): print("트레이스 함수를 전달 중입니다") def profile(): print("프로파일 스레드: " + str(threading.current_thread().getName())) class mythread(threading.Thread): def __init__(self, thread_name, thread_ID): threading.Thread.__init__(self) self.thread_name = thread_name self.thread_ID = thread_ID def run(self): print(str(self.thread_ID)); print("활성 스레드는: "+ str(threading.active_count())) print("현재 스레드는: " + str(threading.current_thread().getName())) my_thread1 mythread("PP", 500) my_thread2 mythread("PythonProgram", 1000); print("메인 �hread 이름: ") + str(threading.main_thread().getName())) print("메인 �hread 식별: ")+ str(threading.get_ident())) print("스택 크기 = ") + str(threading.stack_size())) print(threading.settrace(trace_function())) threading.setprofile(profile()) my_thread1.start() my_thread2.start() print("리스트 편집: ") print(threading.enumerate()) print("나가기")
출력 결과
메인 �hread 이름: MainThread 메인 �hread 식별 5436 스택 크기 = 0 trace 함수 전달 None 프로파일 �hread: MainThread 500 1000리스트 편집: 활성 �hread은: 6 [<_MainThread(MainThread, 시작 5436)>, <Thread(Thread-4, 시작 daemon 1960)>, <Heartbeat(Thread-5, 시작 daemon 6452)>, <HistorySavingThread(IPythonHistorySavingThread, 시작 4304)>, <mythread(Thread-8, 시작 8460)>, <mythread(Thread-9, 시작 4668)>] 나가기 현재 �hread은: �hread-8 활성 �hread은: 5 현재 �hread은: �hread-9