c에서의 스레드는 병렬성을 의미합니다. 하지만 파이썬에서의 스레드는 동시성을 의미합니다. 따라서 속도에서의 향상을 기대하기는 어렵습니다.
그 이유는 바로 GIL(Global Interpreter Lock) 때문입니다. 예를 들어서 한 데이터를 가지고 3가지 방법으로 진행시켜 본다고 가정해 봅시다. 동시에 3곳에서 한 데이터를 접근하려고 하면 오류가 발생할 수 있기 때문에, GIL에서 이를 막고, 순차적으로 접근할 수 있도록 분배해주는 역할을 합니다. 즉, GIL이 한번에 한 스레드만 실행시키도록 하는 것이며, 속도를 높이는 기능을 하기에는 무리가 있습니다.
ex)
from threading import Tread
class Test(Tread):
def __init__(self):
super(Test, self).__init()__() # Thread 상속받을 경우, initialize 필요
def run() # run 함수를 오버로딩 해주어야 함
pass
'python' 카테고리의 다른 글
11. Extra Data Structure - 2, deque (0) | 2021.01.13 |
---|---|
10. Extra Data Structure - 1, defaultdict, counter (0) | 2021.01.13 |
8. python, 파이썬에서의 병렬처리(subprocess) (0) | 2021.01.13 |
7. python, 추상 클래스 (0) | 2021.01.13 |
6. python, magic method (0) | 2021.01.13 |
댓글