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进行异常值分析实例代码
Dec 07 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
python远程连接服务器MySQL数据库
Jul 02 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
Python concurrent.futures模块使用实例
Dec 24 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Python控制台实现交互式环境执行
Jun 09 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
python如何设置静态变量
Sep 07 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
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
PHP 中的批处理的实现
2007/06/14 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python内置加密模块用法解析
2019/11/25 Python
python 项目目录结构设置
2020/02/14 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python requests上传文件实现步骤
2020/09/15 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
平安工地建设方案
2014/05/06 职场文书
优秀党员事迹材料
2014/12/18 职场文书
万里长城导游词
2015/01/30 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python