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正则表达式
Jan 15 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
Python网页解析器使用实例详解
May 30 Python
python爬取音频下载的示例代码
Oct 19 Python
粗暴解决CUDA out of memory的问题
May 22 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
Laravel中注册Facades的步骤详解
2016/03/16 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
提高jQuery性能的十个诀窍
2013/11/14 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
Node 代理访问的实现
2019/09/19 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python 的 with 语句详解
2014/06/13 Python
详解Python进程间通信之命名管道
2017/08/28 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
什么是封装
2013/03/26 面试题
大学生饮食配送创业计划书
2014/01/04 职场文书
工作表现评语
2014/01/19 职场文书
活动志愿者自荐信
2014/01/27 职场文书
护理专业自荐信范文
2014/02/26 职场文书
总账会计岗位职责
2014/03/13 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
初三学习计划书范文
2014/04/30 职场文书
初中学习计划书范文
2014/09/15 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
新入职员工工作总结
2015/10/15 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
在js中修改html body的样式
2021/11/11 Javascript