>백엔드 개발 >파이썬 튜토리얼 >Python에서 멀티스레딩을 사용하는 방법은 무엇입니까?

Python에서 멀티스레딩을 사용하는 방법은 무엇입니까?

王林
王林원래의
2023-06-03 18:21:063325검색

컴퓨터의 발달로 우리가 처리해야 하는 데이터의 양이 점점 늘어나고 있으며, 일부 작업을 완료하는 데 오랜 시간이 걸립니다. 프로그램의 효율성을 높이기 위해 많은 프로그래머들은 프로그램이 동시에 여러 하위 작업을 수행할 수 있게 해주는 멀티스레딩 기술에 주목하기 시작했습니다. 이번 글에서는 파이썬에서 멀티스레딩을 사용하는 방법을 소개하겠습니다.

1. 멀티스레딩이란 무엇인가요?

프로그래밍에서 스레드는 독립적으로 실행될 수 있는 프로그램의 가장 작은 단위를 의미합니다. 단일 스레드 프로그램과 비교하여 다중 스레드 프로그램은 동시에 여러 작업을 수행할 수 있습니다. 즉, 완료해야 할 작업이 여러 개인 경우 멀티스레딩을 사용하여 이러한 작업이 서로 다른 스레드에서 동시에 발생하도록 할 수 있으므로 프로그램에 필요한 시간이 단축됩니다.

2. 멀티스레딩을 사용하는 이유는 무엇인가요?

단일 스레드 프로그램을 사용할 때 두 개의 장기 실행 작업 A와 B를 완료하려면 해당 작업을 순서대로 실행해야 합니다. 즉, 작업 A가 10초가 걸린다면 작업 B를 실행하기 전에 해당 10초를 기다려야 합니다. 이렇게 하면 프로그램의 효율성이 매우 낮아집니다.

그러나 멀티스레딩 기술을 사용하여 작업 A와 B를 동시에 실행하면 둘 다 10초가 걸리더라도 총 시간은 10초에 불과합니다. 그렇게 하면 효율성이 향상될 뿐만 아니라 시간도 절약됩니다.

3. Python의 멀티스레딩

Python은 스레딩 모듈을 사용하여 멀티스레딩을 구현합니다. 스레딩 모듈에는 주로 다음과 같은 중요한 클래스가 있습니다.

  • Thread: 이 클래스는 별도의 스레드를 나타냅니다.
  • Lock: 이 클래스는 경합 및 데이터 손상을 방지하기 위해 여러 스레드에서 공유 리소스에 대한 액세스를 제어하는 ​​데 사용됩니다.
  • RLock: 이 클래스는 Lock과 유사하지만 동일한 스레드가 여러 번 잠금을 획득할 수 있도록 허용합니다.
  • 조건: 이 클래스는 여러 스레드 간의 조정 및 통신에 사용됩니다.

또한 멀티 스레드 프로그래밍을 지원하는 데 사용되는 current_thread(), enumerate() 등과 같은 일부 함수와 메서드가 있습니다.

아래에서는 threading.Thread 클래스를 사용하여 구현하는 멀티 스레딩 예제를 보여드리겠습니다.

4. 예제

시간이 많이 걸리는 작업과 더 짧은 작업을 시뮬레이션하기 위해 간단한 스레드를 작성해 보겠습니다. 멀티스레딩의 유용성을 보여주기 위해 두 개의 스레드를 사용하여 두 작업을 모두 수행합니다.

먼저 스레딩 모듈을 소개해야 합니다.

import threading

다음으로 두 가지 함수를 정의합니다. 하나는 시간이 많이 걸리는 작업을 시뮬레이션하고 다른 하나는 더 짧은 작업을 시뮬레이션합니다. 이 두 함수는 각각 time 모듈의 sleep() 메서드를 사용하여 작업의 실행 시간을 시뮬레이션합니다.

import time
 
def long_task():
  print('开始执行一个耗时的任务')
  time.sleep(5)   # 模拟任务执行时间为5秒钟
  print('执行完毕')
 
def short_task():
  print('开始执行一个较短时间的任务')
  time.sleep(2)   # 模拟任务执行时间为2秒钟
  print('执行完毕')

다음으로 threading.Thread 클래스를 사용하여 두 개의 스레드를 생성하고, 각 스레드는 위의 두 기능을 각각 실행합니다.

t1 = threading.Thread(target=long_task)   # 创建线程1
t2 = threading.Thread(target=short_task)  # 创建线程2
 
t1.start()   # 启动线程1
t2.start()   # 启动线程2
 
t1.join()    # 等待线程1运行完毕
t2.join()    # 等待线程2运行完毕
 
print('程序运行结束')

위 코드에서는 threading.Thread 클래스를 사용하여 두 개의 스레드 t1과 t2를 생성했습니다. 각 스레드는 위에서 정의한 두 가지 함수를 작업으로 사용하는데, 그 중 장기 작업에는 long_task(), 단기 작업에는 short_task()가 사용됩니다.

메인 스레드에서는 start() 메서드를 사용하여 두 스레드를 시작합니다. start() 메서드는 스레드의 run() 메서드를 호출하여 작업을 수행합니다. 그런 다음 Join() 메서드를 사용하여 두 스레드가 모두 실행을 마칠 때까지 기다립니다.

마지막으로 프로그램이 종료되었음을 알리기 위해 “Program End”를 출력합니다.

위 코드를 실행하면 다음과 같은 출력이 표시됩니다.

开始执行一个耗时的任务
开始执行一个较短时间的任务
执行完毕
执行完毕
程序运行结束

시간이 많이 걸리는 작업을 수행하는 스레드보다 짧은 작업을 수행하는 스레드가 먼저 끝나는 것을 볼 수 있습니다. 이는 멀티스레딩이 프로그램의 효율성을 향상시킨다는 것을 보여줍니다.

이 예제는 간단하지만 멀티스레드 프로그래밍에 Python을 사용하는 방법을 보여줍니다.

5. 요약

이 기사에서는 멀티 스레드 프로그래밍의 개념과 장점, Python이 스레딩 모듈을 사용하여 멀티 스레드 프로그래밍을 지원하는 방법을 소개했습니다. 샘플 코드는 스레드를 생성하고, 스레드 작업을 정의하고, 스레드의 실행 순서를 제어하는 ​​방법을 보여줍니다.

멀티스레딩은 많은 양의 데이터를 처리해야 하거나 시간이 많이 걸리는 작업을 수행해야 할 때 매우 유용한 도구입니다. 이 기사가 멀티스레딩의 기본 개념과 Python에서 멀티스레딩을 사용하는 방법을 이해하는 데 도움이 되었기를 바랍니다.

위 내용은 Python에서 멀티스레딩을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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