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 相关文章推荐
TensorFlow 滑动平均的示例代码
Jun 19 Python
python使用多进程的实例详解
Sep 19 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
如何使用Python标准库进行性能测试
Jun 25 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
使用Pytorch训练two-head网络的操作
May 28 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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 while循环得到循环次数
2013/10/26 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python深度优先算法生成迷宫
2018/01/22 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
python3对接mysql数据库实例详解
2019/04/30 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
云台山导游词
2015/02/03 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
同乡会致辞
2015/07/30 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL