这里有新鲜出炉的 Python 入门,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 Golang 与 python 线程详解及简单实例的相关资料, 需要的朋友可以参考下
Golang 与 python 线程详解及简单实例
在 GO 中,开启 15 个线程,每个线程把全局变量遍历增加 100000 次,因此预测结果是 15*100000=1500000.
- var sum int
- var cccc int
- var m * sync.Mutex func 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)
- }
- }
- }
但是最终的结果,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 中:同样方式实现,也不行。
- count = 0
- def sumCount(temp):
- global count
- for i in range(temp):
- count = count + 1
- 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)
输出结果:3004737
说明也需要加锁:
- mutex = threading.Lock()
- count = 0
- def 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,加锁的小列子。
来源: http://www.phperz.com/article/17/0518/334865.html