GILを考えると、このプログラムは9秒で終了すると思っていましたが、驚いたことに4秒で終了します。考えられる理由を探したり、私は何かを逃していますか?実行のマルチスレッドのPythonプログラムの実行時間
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()
時間: - スレッドで9sec
- -
スレッドがなければ4秒
3つのスレッドを作成していて、いずれも共有リソースを使用していないため、すべてがスリープして同時に終了します*ので、4秒は正しいです。 – Ibrahim
'sleep'はGILを解放します。 http://stackoverflow.com/questions/1205328/scheduling-issues-in-python – cdarke
ok、thanks @cdarkeを参照してください。これは役に立ちます。 –