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爬虫实例扒取2345天气预报
Mar 04 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
python实现黑客字幕雨效果
Jun 21 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
Python进度条的制作代码实例
Aug 31 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Python配置pip国内镜像源的实现
Aug 20 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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
谈一谈收音机的高放电路
2021/03/02 无线电
php URL跳转代码 减少外链
2011/06/25 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
React实现轮播效果
2020/08/25 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Flask之请求钩子的实现
2018/12/23 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python实现猜数游戏
2020/03/27 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
家长对孩子评语
2014/01/30 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
毕业大学生自荐信
2014/06/17 职场文书
国庆宣传标语
2014/06/30 职场文书
2014年服务行业工作总结
2014/11/18 职场文书