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使用datetime模块计算各种时间间隔的方法
Mar 24 Python
python与php实现分割文件代码
Mar 06 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 Python
Python实现多线程的两种方式分析
Aug 29 Python
Python Pandas 箱线图的实现
Jul 23 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
python3代码中实现加法重载的实例
Dec 03 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 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中的三元运算符使用说明
2011/07/03 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
详解Python 解压缩文件
2019/04/09 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
python字符串的index和find的区别详解
2020/06/20 Python
提高python代码运行效率的一些建议
2020/09/29 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Pandas的数据过滤实现
2021/01/15 Python
Python如何实现单例模式
2016/06/03 面试题
投资协议书范本
2014/04/21 职场文书
给校长的建议书100字
2014/05/16 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS