多核心利用
来源:互联网 发布:mysql with as 实现 编辑:程序博客网 时间:2024/05/29 10:54
没有比较用时,有兴趣的同学可以自己试试。
下边的例子可以看到gevent是单线程下的高并发,在没有DMA异步IO(比如网络通信)的情况下,实际效果和同步的效率一样,甚至可能会更低。
#!/usr/bin/pythonfrom gevent import monkey; monkey.patch_all()import multiprocessingimport gevent as gdef calc(): x = 0 for i in xrange(2300000000): x += i print xdef coroutine(): g.joinall([g.spawn(calc) for x in xrange(24)])coroutine()
配合多进程将CPU全都跑到100%
#!/usr/bin/pythonimport multiprocessingimport gevent as gdef calc(): x = 0 for i in xrange(2300000000): x += i print xdef coroutine(): g.joinall([g.spawn(calc) for x in xrange(24)])pool = multiprocessing.Pool(processes = 24)for h in xrange(24): pool.apply_async(coroutine)pool.close()pool.join()
golang明显更简单,因为go在底层封装了一些异步的函数,所以用起来十分方便,不使用runtime就会单进程在一颗CPU上跑,使用和逻辑CPU相同数目的进程就会把全部CPU跑满,基本上可以说和上边python的协程一样。
package mainimport "fmt"import "runtime"var ch chan int = make(chan int, 50)func calc() { x := 0 for a := 0; a < 2300000000; a++ { x += a } ch <- x}func main() { runtime.GOMAXPROCS(24) for i := 0; i < 24; i++ { go calc() } for v := range ch { fmt.Println(v) if len(ch) <= 0 { break } } fmt.Println("Done!")}
阅读全文
0 0
- 多核心利用
- odoo 8.0 多核启用,python多核心利用测试
- 利用CPU多核处理
- MySQL利用多核处理器
- 多核CPU利用测试
- 多核CPU利用测试
- 安卓应用对多核心的利用情况
- 利用多核优势,遍历NSDictionary
- Python怎么利用多核cpu
- 利用多核多线程进行程序优化
- 利用多核多线程进行程序优化
- 利用多核多线程进行程序优化
- 利用多核多线程进行程序优化
- 利用多核多线程进行程序优化
- 利用多核多线程进行程序优化[ZT]
- IOS 利用多核运算-GCD开发
- 利用多核多线程进行程序优化-转载
- 利用多核多线程进行程序优化
- Redis集群的方案总结:客户端Sharding/Redis Cluster/Proxy
- Linux-----curl命令
- hbase复制表(本地或者跨集群)
- JAVA回调机制(CallBack)详解
- Angular 4 文本框自动获取焦点
- 多核心利用
- 测试关键词来源
- 11_Java面向对象_第3天(接口、多态)
- 深入理解javascript原型和闭包(7)——原型的灵活性
- 面试题整理学习(三):Git常用命令整理
- 部落节点和跨群集搜索:Elasticsearch中联合搜索的未来
- Android Gradle解析
- 一些小程序的个人总结(2)
- String、StringBuffer和StringBuilder的区别