def multiprocess_function():
run = 0
while run == 0:
for i in the range(100):
#This will initiate 100 threads
threading.Thread(target=sum, args=(i,0))
time.sleep(10)
p1 = multiprocessing.Process(target=multiprocess_function)
p1.start
위의 코드 조각에서 새로운 무한 루프 프로세스 (별도의 코어 (예 : # 2)에서)를 시작하고 있습니다. 이 함수 내에서 100 개의 스레드를 시작합니다. 스레드가 동일한 코어 # 2에서 실행됩니까 아니면 기본 Python 코어에서 실행됩니까?
또한 하나의 코어에서 몇 개의 스레드를 실행할 수 있습니까?
모든 스레드는 시작된 프로세스 내에서 실행됩니다. 이 경우 프로세스 p1
.
프로세스에서 실행할 수있는 스레드 수와 관련하여 CPython에서는 한 번에 하나의 스레드 만 Python bytecode를 실행할 수 있다는 점을 명심해야합니다 . 이는 Global Interpreter Lock ( "GIL")에 의해 시행됩니다. 따라서 많은 계산이 필요한 작업의 경우 일반적으로 스레드가 아닌 프로세스를 사용하는 것이 좋습니다.
에 대한 설명서를 보면 concurrent.futures.ThreadPoolExecutor
기본적으로 사용하는 작업자 스레드 수는 물리적 프로세서 양의 5 배입니다. 해당 이음새 ThreadPoolExecutor
는의 의미 가있는 워크로드 종류에 대해 합리적인 양 입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다