GIL在Python多線程的應(yīng)用
1、說明
GIL對(duì)I/O綁定多線程程序的性能影響不大,因?yàn)榫€程在等待I/O時(shí)共享鎖。
GIL對(duì)計(jì)算型綁定多線程程序有影響,例如:使用線程處理部分圖像的程序,不僅會(huì)因鎖定而成為單線程,而且還會(huì)看到執(zhí)行時(shí)間的增加,這種增加是由鎖的獲取和釋放開銷的結(jié)果。
2、實(shí)例
順序執(zhí)行單線程(single_thread.py)
importthreading
importtime
deftest_counter():
i=0
for_inrange(100000000):
i+=1
returnTrue
defmain():
start_time=time.time()
fortidinrange(2):
t1=threading.Thread(target=test_counter)
t1.start()
t1.join()
end_time=time.time()
print("Totaltime:{}".format(end_time-start_time))
if__name__=="__main__":
main()
以上就是GIL在Python多線程的應(yīng)用,希望能對(duì)大家有所幫助,更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。