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 当前全局变量和入口参数的所有属性
Jul 01 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
Python中字典的基本知识初步介绍
May 21 Python
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
pymysql模块的操作实例
Dec 17 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
python redis存入字典序列化存储教程
Jul 16 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
Python 图片处理库exifread详解
Feb 25 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中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
python字典序问题实例
2014/09/26 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
python常用函数与用法示例
2019/07/02 Python
Python调用C语言的实现
2019/07/26 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
餐厅服务员岗位职责
2015/02/09 职场文书
送达通知书
2015/04/25 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
《认识钟表》教学反思
2016/02/16 职场文书