GIL을 고려할 때이 프로그램은 9 초 안에 완료 될 것으로 예상했지만 놀랍게도 4 초 만에 끝납니다. 그럴 가능성이있는 이유를 찾거나 무엇인가 놓치고 있습니까? 실행멀티 스레드 파이썬 프로그램의 실행 시간
import time
import threading
def get_data(start, end):
res = []
for i in range(start, end):
time.sleep(1)
res.append(i)
print res
range_list = [(1,4), (4,7), (6,10)]
for r in range_list:
t = threading.Thread(target=get_data, args = (r[0], r[1]))
t.start()
시간 : - 스레딩과 함께 9 초
- -
스레딩없이 4 초
3 개의 스레드를 생성하고 공유 자원을 사용하는 스레드가 없기 때문에 모든 스레드가 동시에 대기 * *하므로 4 초가 정확합니다. – Ibrahim
'sleep '은 GIL을 해제합니다. http://stackoverflow.com/questions/1205328/scheduling-issues-in-python – cdarke
ok, thanks @cdarke를 참조하십시오. 이것은 도움이됩니다. –