欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

gil原理講解

gil原理講解?

gil原理如下:

(1)線程1、2、3輪流執(zhí)行,每一個(gè)線程在執(zhí)行是,都會(huì)鎖住GIL,以阻止別的線程執(zhí)行;

同樣的,每一個(gè)線程執(zhí)行一段后,會(huì)釋放GIL,以允許別的線程開始利用資源。

(2)由于古老GIL機(jī)制,如果線程2需要在CPU2上執(zhí)行,它需要先等待在CPU1上執(zhí)行的線程1釋放GIL(記住:GIL是全局的)

(3)如果線程1是因?yàn)?i/o 阻塞讓出的GIL,那么線程2必定拿到GIL。但如果線程1是因?yàn)閠imer ticks計(jì)數(shù)滿100ticks(大概對(duì)應(yīng)了1000個(gè)bytecodes)讓出GIL,那么這個(gè)時(shí)候線程1和線程2公平競爭。

(4)但要命的是,在Python 2.x, 線程1不會(huì)動(dòng)態(tài)的調(diào)整自身的優(yōu)先級(jí),所以很大概率下次被選中執(zhí)行的還是線程1,在很多個(gè)這樣的選舉周期內(nèi),線程2只能安靜的看著線程1拿著GIL在CPU 1上歡快的執(zhí)行。

(5)極端一點(diǎn)的情況下,比如線程1使用了while True在CPU1上執(zhí)行,那就真是“一核有難,八核圍觀”了。