가정하자 I는 C가 (++) 함수는 정수를 복용하고, 파이썬 API로 (C) 파이썬에 결합되므로, I 파이썬에서 호출 할 수호 배수 C++ 함수 스레드
import c_module
c_module.f(10)
지금은 병렬화하고 싶습니다. 문제는 다음과 같습니다.이 경우 GIL은 어떻게 작동합니까? 처리 할 숫자 대기열이 있고 일부 작업자 (threading.Thread
)가 병렬로 작업 중이며 각각 c_module.f(number)
(number
)을 대기열에서 가져온 것으로 가정합니다.
GIL이 인터프리터를 잠글 때 일반적인 경우와 다른 점은 컴파일러가 있기 때문에 c_module.f
을 평가할 인터프리터가 필요 없다는 것입니다. 그래서 질문은 :이 경우 가공은 실제로 평행입니까?
파이썬에서 스레드를 사용하여 속도가 많이 빨라질 것이라고 생각하지 않습니다. 더 나은 방법은 OpenMP를 사용하여 포트 런 함수의 수를 병렬화하고 벡터화 된 데이터로 호출하는 것입니다. –