Golang与python线程详解及简单实例


Posted in Python onApril 27, 2017

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,加锁的小列子。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Python 正则表达式(转义问题)
Dec 15 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
python脚本第一行如何写
Aug 30 Python
python SOCKET编程基础入门
Feb 27 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 #Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 #Python
Python中创建字典的几种方法总结(推荐)
Apr 27 #Python
Python中index()和seek()的用法(详解)
Apr 27 #Python
Python中几种导入模块的方式总结
Apr 27 #Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 #Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 #Python
You might like
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
php实现源代码加密的方法
2015/07/11 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
bootstrap Table实现合并相同行
2019/07/19 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
Python实现数据库编程方法详解
2015/06/09 Python
深入浅出学习python装饰器
2017/09/29 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
法律进学校实施方案
2014/03/15 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
个人思想政治总结
2015/03/05 职场文书
消防安全月活动总结
2015/05/08 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
离职告别感言
2015/08/04 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL