0

Thread.ident을 스레드의 고유 식별자로 생각했지만 threading.current_thread().ident에 의해 동일한 스레드 식별자를보고하는 다른 작업자 프로세스가 multiprocessing.poo.Pool 인 것으로 나타났습니다. 방법?다중 처리 풀 작업자의 스레드 식별자

답변

1

플랫폼에 따라 ID는 고유하거나 다를 수 있습니다. 여기에서 중요한 것은 파이썬 다중 처리 라이브러리가 실제로 다중 처리를 위해 스레드 대신 프로세스를 사용하므로 프로세스 간 스레드 ID는 실제로 플랫폼 특정 구현 세부 사항입니다.

Unix/Linux의 경우 : 스레드 ID는 단일 프로세스 내에서 고유해야합니다. 그러나 스레드 ID는 프로세스에서 고유하지 않을 수도 있습니다. 그러나 processid (pid)는 여러 프로세스에서 고유합니다. 따라서 두 식별자를 결합하여 고유 한 식별자를 얻을 수 있습니다. man pthread 페이지 창에 http://man7.org/linux/man-pages/man7/pthreads.7.html

에서 세부 사항은 : https://msdn.microsoft.com/en-us/library/windows/desktop/ms686746(v=vs.85).aspx

+0

그것은 스레드 ID가 프로세스 당 고유 설명되어 있습니다 : 스레드 ID는 전체 시스템에서 고유? – Reith

+0

@ 0x2c52 나는 그것을 위해 약간 검색해야했고, 그렇게함으로써, 나는 나의 대답을 분명히 할 것이다. Windows 스레드는 시스템에서 고유해야하며 Linux 스레드는 프로세스 내에서 고유해야합니다. man pthreads : http://man7.org/linux/man-pages/man7/pthreads.7.html - "스레드 ID는 프로세스 내에서만 고유해야합니다 ( 에서 스레드를 허용하는 모든 pthreads 함수 ID를 인수로 사용하는 경우 ID는 정의에 따라 호출자와 동일한 프로세스의 스레드를 나타냅니다.) "Windows : https://msdn.microsoft.com/en-us/library/windows/desktop/ms686746(v = vs.85) .aspx –