2013-07-10 3 views
-2

GIL이 진정한 스레드를 지원하는 비단뱀의 능력을 제한한다는 점을 감안할 때, 언어가 진정한 멀티 쓰레딩을 지원할 수 있도록 현재의 파이썬 구현에서 제거 할 수 있습니까? 또한 GIL이 제거되었다고 가정하면 다중 코어 스레딩이 마침내 Python 및 Ruby와 같은 스크립팅/해석 언어로 이어지게 될까요?PyPy 대 Cpython, GIL을 삭제하고 POSIX 스레드를 지원합니까?

+0

[multitprocessing?] (http://docs.python.org/2/library/multiprocessing.html) – dawg

+1

잠재적으로 보았습니까? 그러나 그들의 길을 잃으면 C 확장에 관해서는 세상을 망가뜨릴 것이고 잠재적으로 미묘한 기억 문제로 이끌 것입니다. 당신은 항상 다중 처리를 할 수 있습니다. – jozefg

답변

2

귀하의 질문에 결함이 있습니다. 파이썬은 스레드를 잘 지원합니다. 사실, * nix에서 실행되는 Python 프로그램에서 스레드를 만들 때 정확히 하나의 추가 스레드 pthreads이 생성되지만 아무런 질문이 없습니다. 유일한 제한은 Python 코드가 병렬로 실행되지 않지만 동시에 실행되고 인터리브 된 등입니다. I/O를 수행하는 거의 모든 것과 같이 GIL에 속하지 않는 코드는 다른 스레드가 파이썬 코드를 실행하는 것을 막지 않습니다.

removing the GIL ... 입니다. 마찬가지로, 정말로 정말로 하드. 당신과 나는 단지 그것이 불가능하다고 생각할 수 있습니다. (이봐, 적어도 초인적 인 사람 을 성공하면 우리는 즐겁게 놀랄 것이다.) 다른 구현 (Jython, IronPython)은 GIL을 가지고 있지 않지만, CPython에 대한 접근법은 실용적이지 않습니다. (PyPy에서도 쉽게 들리지 않습니다.) CPython을 대체 할 수는 없습니다. C 확장을 지원하지 않고 이국적인 플랫폼에 이식성이 떨어진다.

즉, 일부 PyPy 개발자는 GIL에서 PyPy를 제거 할 STM 솔루션 (latest update)을 개발 중이다. CPython 다른 한편으로는? STM과 관련하여, 잠재적 인 ABI 및 API 손상이 고려 될 가능성이 있다고 생각하지 않습니다.