国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Golang與python線程詳解及簡單實例

2020-02-23 04:36:39
字體:
供稿:網(wǎng)友

Golang與python線程詳解及簡單實例

在GO中,開啟15個線程,每個線程把全局變量遍歷增加100000次,因此預(yù)測結(jié)果是 15*100000=1500000.

var sum intvar cccc intvar m *sync.Mutexfunc Count1(i int, ch chan int) {  for j := 0; j < 100000; j++ {   cccc = cccc + 1  }  ch <- cccc}func main() {  m = new(sync.Mutex)  ch := make(chan int, 15)  for i := 0; i < 15; i++ {   go Count1(i, ch)  }  for i := 0; i < 15; i++ {   select {   case msg := <-ch:     fmt.Println(msg)   }  }}

但是最終的結(jié)果,406527

說明需要加鎖。

func Count1(i int, ch chan int) {  m.Lock()  for j := 0; j < 100000; j++ {   cccc = cccc + 1  }  ch <- cccc  m.Unlock()}

最終輸出:1500000

python中:同樣方式實現(xiàn),也不行。

count = 0def sumCount(temp):  global count  for i in range(temp):    count = count + 1li = []for i in range(15):  th = threading.Thread(target=sumCount, args=(1000000,))  th.start()  li.append(th)for i in li:  i.join()print(count)

輸出結(jié)果:3004737

說明也需要加鎖:

mutex = threading.Lock()count = 0def sumCount(temp):  global count  mutex.acquire()  for i in range(temp):    count = count + 1  mutex.release()li = []for i in range(15):  th = threading.Thread(target=sumCount, args=(1000000,))  th.start()  li.append(th)for i in li:  i.join()print(count)

輸出1500000

OK,加鎖的小列子。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 香河县| 桦南县| 夏河县| 云龙县| 韩城市| 定远县| 巴马| 本溪| 和田市| 安阳县| 延寿县| 天镇县| 津南区| 茶陵县| 专栏| 师宗县| 漯河市| 龙江县| SHOW| 汨罗市| 长白| 都匀市| 民丰县| 沽源县| 龙州县| 望谟县| 雷波县| 天祝| 永昌县| 马山县| 永嘉县| 泾川县| 昌都县| 贵溪市| 双桥区| 民县| 马关县| 马关县| 泸水县| 怀远县| 民和|