>백엔드 개발 >파이썬 튜토리얼 >Python에서 프로세스와 스레드를 이해하는 방법은 무엇입니까?

Python에서 프로세스와 스레드를 이해하는 방법은 무엇입니까?

乌拉乌拉~
乌拉乌拉~원래의
2018-08-23 17:41:321508검색

다음 글에서는 파이썬의 프로세스와 스레드가 무엇인지 알아보겠습니다. Python 프로세스와 스레드에 대해 알아보고 Python 프로그래밍에서 Python 프로세스와 스레드가 어떤 역할을 할 수 있는지 알아보세요.


"멀티태스킹"이란 무엇인가요? 간단히 말해서 운영 체제는 동시에 여러 작업을 실행할 수 있습니다. 예를 들어, 브라우저를 사용하여 인터넷을 서핑하고, MP3 플레이어를 듣고, Word에서 숙제를 하고 있습니다. 이는 동시에 세 가지 작업이 실행되는 것입니다. 동시에 백그라운드에서 조용하게 실행되는 많은 작업이 있지만 데스크탑에는 표시되지 않습니다.

요즘에는 멀티코어 CPU가 많이 대중화되었지만, 과거에는 싱글코어 CPU로도 멀티태스킹이 가능했습니다. CPU 실행 코드는 순차적으로 실행되므로 단일 코어 CPU는 어떻게 여러 작업을 수행합니까?

정답은 운영 체제가 각 작업을 교대로 실행한다는 것입니다. 작업 1은 0.01초 동안 실행되고, 작업 2는 0.01초 동안 실행되고, 작업 3으로 전환되고, 0.01초 동안 실행되고... 곧. 표면적으로는 각 작업이 번갈아 실행되지만 CPU의 실행 속도가 너무 빠르기 때문에 모든 작업이 동시에 실행되는 것처럼 느껴집니다.

멀티태스킹의 진정한 병렬 실행은 멀티 코어 CPU에서만 가능합니다. 그러나 작업 수가 CPU 코어 수보다 훨씬 많기 때문에 운영 체제는 자동으로 각 코어에 많은 작업을 차례로 예약합니다. 실행을 위해.

운영 체제의 경우 작업은 프로세스입니다. 예를 들어 브라우저를 열면 브라우저 프로세스가 시작되고, 메모장을 열면 메모장 프로세스가 시작되고, 메모장 두 개를 열면 메모장 프로세스가 시작되고, Word를 열면 프로세스가 시작됩니다. 워드 프로세스.

입력, 맞춤법 검사, 인쇄 등을 동시에 수행할 수 있는 Word와 같은 일부 프로세스는 두 개 이상의 작업을 동시에 수행할 수 있습니다. 프로세스 내에서 동시에 여러 작업을 수행하려면 여러 "하위 작업"을 동시에 실행해야 합니다. 프로세스 스레드 내에서는 이러한 "하위 작업"을 호출합니다.

각 프로세스는 적어도 하나의 작업을 수행해야 하므로 프로세스에는 적어도 하나의 스레드가 있습니다. 물론, Word와 같은 복잡한 프로세스는 여러 개의 스레드를 가질 수 있으며, 여러 스레드가 동시에 실행될 수 있습니다. 멀티스레딩의 실행 방법은 여러 프로세스 사이를 빠르게 전환하는 것과 동일합니다. 각각 허용 스레드는 모두 교대로 짧게 실행되며 동시에 실행되는 것처럼 보입니다. 물론 실제로 여러 스레드를 동시에 실행하려면 멀티 코어 CPU가 필요합니다.

앞서 작성한 모든 Python 프로그램은 단일 작업을 수행하는 프로세스입니다. 즉, 스레드가 하나만 있습니다. 여러 작업을 동시에 수행하고 싶다면 어떻게 해야 할까요?

두 가지 해결 방법이 있습니다.

첫 번째는 여러 프로세스를 시작하는 것입니다. 각 프로세스에는 하나의 스레드만 있지만 여러 프로세스가 함께 여러 작업을 수행할 수 있습니다.

또 다른 방법은 프로세스를 시작하고 하나의 프로세스에서 여러 스레드를 시작하여 여러 스레드가 함께 여러 작업을 수행할 수 있도록 하는 것입니다.

물론 여러 프로세스를 시작하는 세 번째 방법이 있으며, 각 프로세스는 여러 스레드를 시작하여 동시에 더 많은 작업을 실행할 수 있습니다. 물론 이 모델은 더 복잡하고 실제로는 거의 사용되지 않습니다. .

멀티태스킹을 구현하는 방법에는 세 가지가 있습니다:

1. 다중 프로세스 모드

2. 다중 프로세스 + 다중 스레드 모드.

동시에 여러 작업을 실행합니다. 일반적으로 작업은 서로 연관되어 있지 않지만 때로는 작업 1을 일시 중지하고 작업 2가 완료될 때까지 기다려야 계속 실행될 수 있습니다. 작업 3과 작업 4는 동시에 실행될 수 없습니다. 따라서 다중 프로세스 및 다중 스레드 프로그램의 복잡성은 이전에 작성한 단일 프로세스, 단일 스레드 프로그램보다 훨씬 높습니다.

디버깅이 복잡하고 어렵기 때문에 꼭 필요한 경우가 아니면 멀티태스킹을 작성하고 싶지 않습니다. 하지만 멀티태스킹 없이는 불가능할 때가 많습니다. 컴퓨터에서 영화를 보는 경우를 생각해 보세요. 한 스레드는 비디오를 재생하고 다른 스레드는 오디오를 재생해야 합니다. 그렇지 않으면 단일 스레드로 구현된 경우 비디오를 먼저 재생한 다음 오디오를 재생해야 합니다. 그러면 비디오는 분명히 불가능합니다.

Python은 다중 프로세스와 다중 스레딩을 모두 지원합니다.

위 내용은 이 글의 모든 내용입니다. 이 글은 주로 Python의 프로세스와 스레드에 대한 관련 지식을 소개하는 내용입니다. 위 내용을 이해하는 데 도움이 되기를 바랍니다. 이 글에서 제가 설명한 내용이 여러분에게 도움이 되고 파이썬을 더 쉽게 배울 수 있기를 바랍니다.

더 많은 관련 지식을 알고 싶으시면 PHP 중국어 홈페이지의 Python tutorial 칼럼을 방문해 주세요.

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

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