컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 스레드 (멀티 스레드) 란 무엇이며 파이썬 멀티 스레딩의 이점

스레드 (멀티 스레드) 란 무엇이며 파이썬 멀티 스레딩의 이점

거의 모든 운영 체제에서 여러 작업을 동시에 실행할 수 있습니다. 하나의 작업은 일반적으로 하나의 프로그램이고 실행 중인 각 프로그램은 하나의 프로세스입니다. 하나의 프로그램이 실행될 때 내부에는 여러 개의 순차 실행 흐름이 포함될 수 있으며, 각 시퀀스 실행 흐름은 스레드입니다.

스레드와 프로세스

거의 모든 운영 체제에서 프로세스 개념을 지원하며 실행 중인 모든 작업은 일반적으로 하나의 프로세스 (Process) 에 해당합니다. 프로그램이 메모리 실행에 들어가면 프로세스가 됩니다. 프로세스는 실행 중인 프로그램이며 특정 독립 기능을 가지고 있습니다. 프로세스는 시스템이 자원을 할당하고 예약하는 독립적인 단위입니다.

일반적으로 프로세스에는

독립성의 세 가지 특징이 있습니다.

독립성: 프로세스는 시스템에 독립적으로 존재하는 엔티티이며, 자체 독립 리소스를 가질 수 있으며, 각 프로세스에는 자체 전용 주소 공간이 있습니다. 한 사용자 프로세스는 프로세스 자체의 허용 없이는 다른 프로세스의 주소 공간에 직접 액세스할 수 없습니다. < P > 동적: 프로세스는 정적 명령 집합이고 프로세스는 시스템에서 활성 중인 명령 집합이라는 점에서 프로그램과 다릅니다. 프로세스에 시간의 개념을 추가했습니다. 프로세스에는 자체 라이프 사이클과 다양한 상태가 있으며 프로그램에는 이러한 개념이 없습니다.

동시성: 여러 프로세스가 서로 영향을 주지 않고 단일 프로세서에서 동시에 실행될 수 있습니다.

동시 (Concurrency) 와 병렬 (Parallel) 은 동시에 여러 프로세서에서 여러 명령을 동시에 실행하는 두 가지 개념입니다. 동시성은 한 번에 하나의 지시문만 실행할 수 있도록 설계되었지만, 여러 프로세스 지시문은 빠르게 번갈아 실행되므로 거시적으로 여러 프로세스가 동시에 실행되는 효과가 있습니다.

대부분의 운영 체제는 멀티 프로세스 동시 실행을 지원하며, 최신 운영 체제는 거의 동시에 여러 작업을 실행할 수 있습니다. 예를 들어, 프로그래머는 개발 도구를 열고 프로그램을 작성하면서 참조 수첩을 열어 조사를 준비하면서 동시에 컴퓨터를 사용하여 음악을 재생합니다. 또한 각 컴퓨터가 실행될 때 많은 기본 지원 프로그램이 실행되고 있습니다. 이러한 프로세스는 동시에 작동하는 것처럼 보입니다. < P > 하지만 진실은 CPU 의 경우 특정 시점에서 하나의 프로그램만 실행할 수 있다는 것입니다. 즉, 하나의 프로세스만 실행할 수 있으며 CPU 는 이러한 프로세스 간에 계속 번갈아 실행됩니다. 그렇다면, 왜 사용자는 어떠한 중단도 느끼지 못할까요? < P > 이는 상대적으로 CPU 가 너무 빨리 실행되기 때문입니다 (시작 프로그램이 충분한 경우 사용자는 여전히 프로그램 실행 속도가 떨어지는 것을 느낄 수 있음). 따라서 CPU 가 여러 프로세스 간에 번갈아 실행되지만 사용자는 여러 프로세스가 동시에 실행되는 것처럼 느껴집니다.

최신 운영 체제는 멀티 프로세스의 동시 실행을 지원하지만 구체적인 구현 세부 사항은 하드웨어와 운영 체제에 따라 다른 전략을 채택할 수 있습니다. 일반적으로 사용되는 전략은 다음과 같습니다.

*** Windows 3.1 및 Mac OS 9 운영 체제와 같은 멀티 태스킹 정책을 사용합니다.

보다 효율적인 선점 방식의 멀티 태스킹 운영 전략으로 현재 운영 체제는 대부분 Windows NT, Windows 2, UNIX/Linux 와 같은 운영 체제를 채택하고 있습니다.

다중 스레드는 다중 프로세스의 개념을 확장하여 동일한 프로세스가 여러 작업을 동시에 처리할 수 있도록 합니다. 스레드 (Thread) 는 경량 프로세스 (Lightweight Process) 라고도 하며 스레드는 프로세스의 실행 단위입니다. 운영 체제에서 프로세스의 지위와 마찬가지로 스레드는 프로그램 내에서 독립적인 동시 실행 흐름입니다.

프로세스가 초기화되면 마스터 스레드가 생성됩니다. 대부분의 응용 프로그램에서는 일반적으로 하나의 주 스레드만 필요하지만 프로세스 내에 여러 개의 시퀀스 실행 스트림을 만들 수도 있습니다. 이러한 시퀀스 실행 흐름은 스레드이며 각 스레드는 독립적입니다.

스레드는 프로세스의 일부이며 한 프로세스에 여러 스레드가 있을 수 있으며 한 스레드에는 상위 프로세스가 있어야 합니다. 스레드는 자체 스택, 자체 프로그램 카운터 및 자체 로컬 변수를 가질 수 있지만 시스템 리소스는 없으며 상위 프로세스의 다른 스레드 * * * 와 함께 해당 프로세스가 소유한 모든 리소스를 공유합니다. 여러 스레드 * * * 가 상위 프로세스의 모든 리소스를 즐기기 때문에 프로그래밍이 더 편리합니다. 그러나 스레드가 동일한 프로세스의 다른 스레드를 방해하지 않도록 해야 하므로 더욱 주의해야 합니다. < P > 스레드는 특정 작업을 수행할 수 있으며, 상위 프로세스의 * * * 공유 변수 및 일부 환경을 다른 스레드 * * * 와 함께 사용하여 완료되지 않은 프로세스가 완료해야 하는 작업을 서로 협력할 수 있습니다.

스레드는 독립적으로 실행되며 프로세스에 다른 스레드가 있는지 여부를 알 수 없습니다. 스레드의 실행은 선점적입니다. 즉, 현재 실행 중인 스레드는 언제든지 일시 중지되어 다른 스레드를 실행할 수 있습니다.

한 스레드는 다른 스레드를 만들고 취소할 수 있으며 동일한 프로세스 내의 여러 스레드 간에 동시에 실행할 수 있습니다. < P > 논리적으로 볼 때 멀티 스레딩은 하나의 애플리케이션에 존재하므로 하나의 애플리케이션이 여러 실행 부분을 동시에 실행할 수 있지만 운영 체제는 여러 스레드를 여러 개의 개별 애플리케이션으로 간주하지 않고 멀티 스레딩을 스케줄링 및 관리, 리소스 할당을 수행할 필요가 없습니다. 스레드 스케줄링 및 관리는 프로세스 자체에 의해 수행됩니다. < P > 간단히 말해서, 프로그램이 실행된 후 하나 이상의 프로세스가 실행되고, 한 프로세스에 여러 스레드를 포함할 수 있지만, 최소한 하나의 마스터 스레드를 포함해야 합니다. < P > 요약하면 운영 체제는 여러 작업을 동시에 실행할 수 있으며, 각 작업은 하나의 프로세스이고, 프로세스는 여러 작업을 동시에 수행할 수 있으며, 각 작업은 스레드입니다.

멀티 스레딩의 이점

스레드는 프로그램 내에서 독립적인 동시 실행 스트림입니다. 프로세스 내 스레드 간의 격리는 구분된 프로세스보다 작으며, 메모리, 파일 핸들 및 기타 프로세스의 적절한 상태 < P > 는 스레드 분할이 프로세스보다 작기 때문에 멀티 스레드 프로그램의 동시성이 높습니다. 프로세스는 실행 중 별도의 메모리 장치를 가지고 있으며 여러 스레드 * * * 가 메모리를 즐기므로 프로그램 실행 효율성이 크게 향상됩니다.

스레드는 동일한 프로세스의 스레드에 모두 * * * 성 다중 스레드 * * * 가 동일한 프로세스의 가상 공간을 공유하기 때문에 프로세스보다 더 높은 성능을 제공합니다. 스레드 * * * 가 즐기는 환경에는 프로세스 조각, 프로세스의 공용 데이터 등이 포함됩니다. * * * 이 데이터를 사용하면 스레드 간에 쉽게 통신할 수 있습니다.

운영 체제는 프로세스를 생성할 때 프로세스에 별도의 메모리 공간을 할당하고 많은 관련 리소스를 할당해야 하지만 스레드를 만드는 것이 훨씬 쉽습니다. 따라서 다중 스레드를 사용하여 동시성을 구현하는 것이 다중 프로세스를 사용하는 것보다 훨씬 더 높은 성능을 제공합니다. < P > 요약하면 멀티 스레드 프로그래밍을 사용하면 다음과 같은 장점이 있습니다. < P > 프로세스 간에는 메모리를 즐길 수 없지만 스레드 간에는 * * * * 메모리를 쉽게 즐길 수 있습니다.

운영 체제는 프로세스를 생성할 때 프로세스에 시스템 리소스를 재할당해야 하지만 스레드 생성 비용은 훨씬 적습니다. 따라서 멀티 스레딩을 사용하면 멀티 프로세스를 사용하는 것보다 멀티 태스킹 동시 실행이 더 효율적입니다.

파이썬 언어에는 단순히 기본 운영 체제의 스케줄링 방식보다는 멀티 스레드 지원 기능이 내장되어 있어 파이썬의 멀티 스레드 프로그래밍을 단순화합니다.

실제 응용 프로그램에서는 멀티 스레딩이 매우 유용합니다. 예를 들어, 브라우저는 동시에 여러 사진을 다운로드 할 수 있어야합니다. 웹 서버는 여러 사용자 요청에 동시에 응답할 수 있어야 합니다. 그래픽 사용자 인터페이스 (GUI) 애플리케이션도 별도의 스레드를 시작하여 호스트 환경에서 사용자 인터페이스 이벤트를 수집해야 합니다. 요약하면, 실제 프로그래밍에서 멀티 스레딩이 광범위하게 적용됩니다.

上篇: 관도 원차 어느 팀이 나팔선이에요? 下篇: 다른 사람의 QQ 계정을 사기 혐의로 신고하면 그 사람은 감옥에 가나요? 3000위안 사기당함
관련 내용