package main import ( "fmt" "sync" ) func print(idx int, wg *sync.WaitGroup) { fmt.Printf("index %d: \n", idx) wg.Done() } func main() { var wg sync.W... ...
分类:
其他好文 时间:
2018-12-04 11:24:12
阅读次数:
178
管道的使用介绍 现在要计算 1-N 的各个数的阶乘,并且把各个数的阶乘放入到 map 中。最后显示出来。要求使用 goroutine 完成 问题1:使用goroutine时,主线程执行结束,即使协程没有执行完毕也会结束,顾map没有结果 问题2:fatal error:并发写 排查方法:在运行某个程 ...
分类:
其他好文 时间:
2018-12-03 01:17:12
阅读次数:
257
一、map并发读写问题 如果map由多协程同时读和写就会出现 fatal error:concurrent map read and map write的错误 如下代码很容易就出现map并发读写问题 func main(){ c := make(map[string]int) go func() { ...
分类:
其他好文 时间:
2018-12-02 14:58:18
阅读次数:
168
在进行单个爬虫抓取的时候,我们不可能按照一次抓取一个url的方式进行网页抓取,这样效率低,也浪费了cpu的资源。目前python上面进行并发抓取的实现方式主要有以下几种:进程,线程,协程。进程不在的讨论范围之内,一般来说,进程是用来开启多个spider,比如我们开启了4进程,同时派发4个spider ...
分类:
编程语言 时间:
2018-12-01 23:48:05
阅读次数:
444
一.进程:1.定义:进程最小的资源单位,本质就是一个程序在一个数据集上的一次动态执行(运行)的过程2.组成:进程一般由程序,数据集,进程控制三部分组成:(1)程序:用来描述进程要完成哪些功能以及如何完成(2)数据集:是程序在执行过程中所需要使用的一切资源(3)进程控制块:用来记录进程外部特征,描述进 ...
分类:
编程语言 时间:
2018-11-29 14:58:38
阅读次数:
184
并发执行任务示例: 1 import asyncio, time 2 3 #异步协程 4 async def hello(): 5 """ 6 这边程序运行时,线程不会等待这个sleep 1s,将直接终端继续执行往下执行,这边5个任务会并发执行 7 :return: 8 """ 9 print("h ...
分类:
其他好文 时间:
2018-11-27 21:01:25
阅读次数:
83
并发与并行:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在单核CPU下的多线程其实都只是并发,不是并行。 进程是系统资源分配的最小单位,进程的出现是为了更好的利用CPU资源使到并发成为可能。进程由操作系统调度。 线程的出现是为了降低上下文切换的消耗,提高系统 ...
分类:
编程语言 时间:
2018-11-25 20:28:32
阅读次数:
111
并发:要做到同时服务多个客户端,有三种技术 1. 进程并行,只能开到当前cpu个数的进程,但能用来处理计算型任务 ,开销最大 2. 如果并行不必要,那么可以考虑用线程并发,单位开销比进程小很多 线程:并发(轮询调度,遇到阻塞就切换) 只要是网络,就会有延迟,有延迟就阻塞,所以比一般的单路要好些 3. ...
分类:
编程语言 时间:
2018-11-25 20:06:18
阅读次数:
324