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的一些用法分享
Oct 07 Python
使用python装饰器验证配置文件示例
Feb 24 Python
python编程实现希尔排序
Apr 13 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
python最长回文串算法
Jun 04 Python
python async with和async for的使用
Jun 20 Python
Python3+Appium安装使用教程
Jul 05 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
python和js交互调用的方法
Jun 23 Python
python lambda 表达式形式分析
Apr 03 Python
python manim实现排序算法动画示例
Aug 14 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实现的购物车类实例
2015/06/17 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python列表list数组array用法实例解析
2014/10/28 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python文本数据相似度的度量
2018/03/12 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python实现抖音点赞功能
2019/04/07 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
500行python代码实现飞机大战
2020/04/24 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
DBA的职责都有哪些
2012/05/16 面试题
高中生自我评价个人范文
2013/11/09 职场文书
商务助理岗位职责
2013/11/13 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
元宵节主持词
2014/03/25 职场文书
广播体操比赛口号
2014/06/10 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
勤俭节约主题班会
2015/08/13 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
django 认证类配置实现
2021/11/11 Python