package main

        import (
"fmt"
"runtime"
"sync"
"time"
) func test_goroutine() {
fmt.Println("函数被执行了*************************")
} func main() { // 测试多核并行化
// 在执一些昂贵的计算任务时,如果希望使用服务器的多核特性来尽量将任务实现并行化,从而达到降低总计算时间的目的
// 当前Golang版本并不能智能地发现和利用多核优势,如果不进行特殊声明,实际上所有的goroutine都运行在一个CPU核心上,
// 当一个goroutine得到时间片执行的时候,其他goroutine都会处于等待状态.
// 在Golang升级到默认支持多个CPU之前,我们可以先通过设置环境变量GOMAXPROCS的值, 或者在代码中启动goroutine之前
// 先调用相应的方法设置使用多少个CPU核心 // 获取cpu核心数
num_cpu := runtime.NumCPU()
// 设置使用的cpu的核心数
runtime.GOMAXPROCS(num_cpu) // 使用sync包实现
var wg sync.WaitGroup // 获取执行任务前的时间戳
start_time := time.Now().Unix() for i:=0; i<=3200000; i++{ wg.Add(1) //添加WaitGroup计数器 go func() { defer wg.Done() //defer标记当前函数作用域执行结束后 释放一个计数器,必须有这一步操作 fmt.Println("函数被执行了*************************")
}()
} wg.Wait() //阻塞,直到WaitGroup中的计数器为0 // 获取执行完成任务后的时间戳
end_time := time.Now().Unix()
fmt.Println(end_time-start_time) // 测试发现当进行简单的计算时,使用多核心和使用单核心执行时间上并没有出现差距, 资源的分配会出现时间损耗
// 简单的计算不建议使用多核cpu进行高并发, 当进行昂贵复杂的计算最好经过充分的测试, 使用合适的核心数进行并发执行任务
}

Golang 实现守护主进程的更多相关文章

  1. 写了一年golang,来聊聊进程、线程与协程

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 进程 在早期的单任务计算机中,用户一次只能提交一个作业,独享系统的全部资源,同时也只能干一件事 ...

  2. Golang防止多个进程重复执行

    创建锁文件 lockFile := "./lock.pid" lock, err := os.Create(lockFile) if err != nil { log.Fatal( ...

  3. 在Python程序中的进程操作,multiprocess.Process模块

    在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...

  4. python 使用多进程实现并发编程/使用queue进行进程间数据交换

    import time import os import multiprocessing from multiprocessing import Queue, pool ""&qu ...

  5. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)

    昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...

  6. day 27 Python中进程的操作

    进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...

  7. 0510进程 multiprocess模块

    process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 创建模块 import os import time from multiprocessing import Proces ...

  8. 多并发编程基础 之进程 Process

    原贴  https://www.cnblogs.com/gbq-dog/p/10299663.html 1. 进程的理论知识 1.1 操作系统的背景知识 顾名思义,进程即正在执行的一个过程.进程是对正 ...

  9. python之路——进程

    操作系统背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其 ...

随机推荐

  1. c3p0数据源配置

    Xml代码   <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: --> ...

  2. ObjC.instancetype

    1. instancetype http://nshipster.com/instancetype/ 2. Objc的扩展 http://clang.llvm.org/docs/LanguageExt ...

  3. 06 Maven 聚合和继承

    Maven 聚合和继承 1. 聚合 2. 继承 <parent> <groupId>org.apache.karaf.demos</groupId> <art ...

  4. 旅游类APP原型模板分享——爱彼迎

    这是一款专为游客提供全球范围内短租服务的APP,可以让你不论出门在外或在家附近都能开展探索之旅,并且还可以获取世界各地独特房源.当地体验及好去处等相关信息. 这款APP层级清晰简明,此原型模板所用到的 ...

  5. 如何优化Mysql数据库

    1.添加主键ID 2.尽量避免使用select * form table 3.创建索引     对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或 ...

  6. [转]Go与C语言的互操作

    Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系.在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持.尤其是在Go中使用 ...

  7. java中File的delete和deleteOnExit区别(转)

    Java的File类中有两个delete方法:delete和deleteOnExit delete无需解释,为直接删除,deleteOnExit文档解释为:在虚拟机终止时,请求删除此抽象路径名表示的文 ...

  8. mysql报错排查总结

    mysql报错: [root@zabbix ~]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through sock ...

  9. aused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method fai

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleDaoImpl' ...

  10. com.liuyang.exception.DaoException: java.sql.SQLException: Incorrect string

    错误是在JUnit测试的时候产生的,但是实际加入数据也会产生这样的情况,主要是数据库内部的编码方式不支持当前的编码方式导致的冲突,解决方法就是在建立数据库之前,要查看当前的数据库的编码方式,方法和更改 ...