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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python是编译运行的验证方法
Jan 30 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
python中返回矩阵的行列方法
Apr 04 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
python判断链表是否有环的实例代码
Jan 31 Python
Python处理mysql特殊字符的问题
Mar 02 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
聊一聊python常用的编程模块
May 14 Python
5行Python代码实现一键批量扣图
Jun 29 Python
Python使用mitmproxy工具监控手机 下载手机小视频
Apr 18 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新手上路(十二)
2006/10/09 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
jquery foreach使用示例
2013/09/12 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python subprocess库的使用详解
2018/10/26 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
Python接口自动化测试的实现
2020/08/28 Python
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
《鞋匠的儿子》教学反思
2014/03/02 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
php字符串倒叙
2021/04/01 PHP
用python修改excel表某一列内容的操作方法
2021/06/11 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
nginx之内存池的实现
2022/06/28 Servers