多核心利用

简介: 版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78552518 没有比较用时,有兴趣的同学可以自己试试。
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78552518

没有比较用时,有兴趣的同学可以自己试试。

下边的例子可以看到gevent是单线程下的高并发,在没有DMA异步IO(比如网络通信)的情况下,实际效果和同步的效率一样,甚至可能会更低。

#!/usr/bin/python

from gevent import monkey; monkey.patch_all()
import multiprocessing
import gevent as g


def calc():
    x = 0
    for i in xrange(2300000000):
        x += i
    print x


def coroutine():
    g.joinall([g.spawn(calc) for x in xrange(24)])


coroutine()


配合多进程将CPU全都跑到100%

#!/usr/bin/python

import multiprocessing
import gevent as g


def calc():
    x = 0
    for i in xrange(2300000000):
        x += i
    print x


def 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 main

import "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!")
}


目录
相关文章
|
19天前
|
资源调度 供应链 监控
深入探究:ERP系统的核心模块解析
深入探究:ERP系统的核心模块解析
33 0
|
2月前
|
UED
产品服务的核心功能
产品服务的核心功能
25 1
|
3月前
|
开发框架 网络安全 数据库
典型应用集成技术
【1月更文挑战第11天】典型应用集成技术。
20 0
|
5月前
|
XML 开发框架 安全
C#学习核心知识总结
C#学习核心知识总结
28 1
|
9月前
|
Python
电子游戏的核心原理
你小时候有没有玩过这样一种玩具:一块硬纸,一面画着一只鸟,一面画着一个笼子。硬纸下粘上一根细棒。用手来回转动细棒,让硬纸的两面快速交替出现,就会看见鸟被关在了笼子里。
|
11月前
|
存储 运维 Kubernetes
【K8S 核心架构原理】
K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave 节点则执行用户的程序。
147 0
|
12月前
为什么要开源核心代码?(1)
为什么要开源核心代码?
|
12月前
为什么要开源核心代码?(2)
为什么要开源核心代码?
|
Oracle Java 关系型数据库
Spring+Mybatis整合核心知识
Spring+Mybatis整合核心知识点
103 0
Spring+Mybatis整合核心知识
测试的核心竞争力是什么?
大家都知道,互联网技术岗位,日常的工作就是完成需求,需求的来源就是实际的业务场景和挑战。上面我提到了利用技术解决问题,这里的问题就是实际的来源于业务迭代带来的挑战。