>백엔드 개발 >파이썬 튜토리얼 >Python 멀티스레드 프로그래밍을 수행하는 방법, 한 기사로 Python 멀티스레딩 이해하기

Python 멀티스레드 프로그래밍을 수행하는 방법, 한 기사로 Python 멀티스레딩 이해하기

Tomorin
Tomorin원래의
2018-08-16 17:36:432246검색

이 글에서는 Python 멀티스레딩을 소개합니다. Python 멀티스레딩을 이해하려면 먼저 스레드가 무엇인지 이해해야 합니다.

스레드는 운영체제가 작업 스케줄링을 수행할 수 있는 가장 작은 단위입니다. 프로세스에 포함되며 프로세스에서 실제 작동하는 단위입니다. 스레드는 프로세스에서 단일 순차 제어 흐름을 의미하며 여러 스레드가 프로세스에서 동시에 실행될 수 있으며 각 스레드는 서로 다른 작업을 병렬로 수행합니다.

그리고 멀티스레딩은 동시에 여러 프로그램을 실행하는 것과 유사합니다. 멀티스레딩에는 다음과 같은 장점이 있습니다.


1. 스레드를 사용하면 장기 프로그램의 작업을 백그라운드로 처리할 수 있습니다. .

2 사용자 인터페이스가 더 매력적일 수 있으므로 사용자가 버튼을 클릭하여 특정 이벤트 처리를 시작하면 진행률 표시줄이 팝업되어 처리 진행 상황을 표시할 수 있습니다.

프로그램 실행 속도가 달라질 수 있습니다. 가속화됩니다

3. 어떤 경우에는 사용자 입력, 파일 읽기 및 쓰기, 네트워크 데이터 전송 및 수신과 같은 대기 작업을 구현할 때 스레드가 더 유용합니다. 이 경우 메모리 사용량 등과 같은 일부 귀중한 리소스를 해제할 수 있습니다.

4. 실행 중에는 여전히 스레드와 프로세스 사이에 차이가 있습니다. 각각의 독립 스레드에는 프로그램 실행을 위한 진입점, 순차적 실행 시퀀스 및 프로그램 종료점이 있습니다. 그러나 스레드는 독립적으로 실행될 수 없으며 응용 프로그램 내에 존재해야 하며 응용 프로그램은 다중 스레드 실행 제어를 제공합니다.

각 스레드에는 스레드 컨텍스트라고 하는 고유한 CPU 레지스터 세트가 있으며, 이는 스레드가 마지막으로 실행되었을 때 CPU 레지스터의 상태를 반영합니다.

명령 포인터와 스택 포인터 레지스터는 스레드 컨텍스트에서 가장 중요한 두 가지 레지스터입니다. 스레드는 항상 프로세스 컨텍스트에서 실행됩니다. 이 주소는 스레드를 소유한 프로세스의 주소 공간에 메모리를 표시하는 데 사용됩니다.

5. 스레드는 선점(중단)될 수 있습니다.

6. 다른 스레드가 실행되는 동안 스레드는 일시적으로 보류(휴면 상태라고도 함)될 수 있습니다. 이것이 스레드의 후퇴입니다.

Python 멀티스레딩 학습 시작

Python에서 스레드를 사용하는 방법에는 두 가지가 있습니다. 스레드 개체를 래핑하는 함수 또는 클래스입니다.

기능: 스레드 모듈에서 start_new_thread() 함수를 호출하여 새 스레드를 생성합니다. 구문은 다음과 같습니다:

thread.start_new_thread ( function, args[, kwargs] )

매개변수 설명:

1.function - 스레드 기능.

2.args - 스레드 함수에 전달되는 매개변수는 튜플 유형이어야 합니다.

3.kwargs - 선택적 매개변수.

첨부된 내용은 예시입니다

#!/usr/bin/python
# -*- coding: UTF-8 -*-
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: unable to start thread"
while 1:
pass

위 프로그램을 실행한 결과는 다음과 같습니다.

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

스레드의 끝은 일반적으로 스레드 함수의 자연스러운 끝 부분에 따라 달라집니다. thread.exit()를 호출할 수도 있습니다. SystemExit 예외를 발생시키는 스레드 함수에서 스레드 종료 목적에 도달

위 내용은 Python 멀티스레드 프로그래밍을 수행하는 방법, 한 기사로 Python 멀티스레딩 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.