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使用递归解决全排列数字示例
Feb 11 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
Python检测生僻字的实现方法
Oct 23 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python os.listdir()乱码解决方案
Jan 31 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP 变量的定义方法
2010/01/26 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python3的输入方式及多组输入方法
2018/10/17 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
Python urllib3软件包的使用说明
2020/11/18 Python
如何用python批量调整视频声音
2020/12/22 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
初入社会应届生求职信
2013/11/18 职场文书
松材线虫病防治方案
2014/06/15 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
思品教学工作总结
2015/08/10 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
一文搞懂php的垃圾回收机制
2021/06/18 PHP
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL