引言 在学习Python多进程.多线程之前,先脑补一下如下场景: 说有这么一道题:小红烧水需要10分钟,拖地需要5分钟,洗菜需要5分钟,如果一样一样去干,就是简单的加法,全部做完,需要20分钟:但是,如果在烧水的同时去拖地.洗菜,全部做完,只需要10分钟! 可以将上述示例中,做事的主体:人,理解成计算机的CPU,而第二种做事方式,可以简单的理解成多任务! 我们都知道计算机是由硬件和软件组成的. 硬件中:CPU是计算机的核心,它承担计算机的所有任务. 软件中:操作系统是运行在硬件之上的软件,是计算…
这篇主要是对概念的理解: 1.异步和多线程区别:二者不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段.异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情.实现异步可以采用多线程技术或则交给另外的进程来处理.多线程的好处,比较容易的实现了 异步切换的思想, 因为异步的程序很难写的.多线程本身程还是以同步完成,但是应该说比效率是比不上异步的. 而且多线很容易写, 相对效率也高. 2.异步和同步的区别:  在io等待的时候,同步不会切走,浪费了时间.异…
最近学习了多线程.多进程.协程以及IO多路复用,那么对于爬取数据来说,这几个方式哪个最快呢,今天就来稍微测试一下 普通方式请求百度5次 import socket import time import socks socks.set_default_proxy(socks.HTTP,addr='192.168.105.71',port=80) #设置socks代理 socket.socket = socks.socksocket # 把代理应用到socket def blocking(wd):…
上一篇博客中我介绍了如何将爬虫改造为多进程爬虫,但是这种方法对爬虫效率的提升不是非常明显,而且占用电脑cpu较高,不是非常适用于爬虫.这篇博客中,我将介绍在爬虫中广泛运用的多线程+协程的解决方案,亲测可提高效率至少十倍以上. 本文既然提到了线程和协程,我觉得有必要在此对进程.线程.协程做一个简单的对比,了解这三个程之间的区别. 以下摘自这篇文章:http://www.cnblogs.com/guokaixin/p/6041237.html 1.进程 进程是具有一定独立功能的程序关于某个数据集合上…
首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运行一个程序. 从操作系统的角度: 进程和线程,都是一种CPU的执行单元. 进程:表示一个程序的上下文执行活动(打开.执行.保存...) 线程:进程执行程序时候的最小调度单位(执行a,执行b...) 一个程序至少有一个进程,一个进程至少有一个线程. 并行 和 并发: 并行:多个CPU核心,不同的程序就分配给不同的CPU来运行.可以让多个程序同时执行…
1.进程的概念 什么是进程->CPU在同一时刻只能处理一个任务,只是因为cpu执行速度很快. cpu在各个任务之间来回的进行切换. 进程的概念:正在进行的一个过程或者说一个任务,而负责执行任务的则是CPU,进程本身是 一个抽象的概念,即进程就是一个过程.一个任务. CPU描述的是一个程序的执行过程. 进程之间是如何做到并发的:CPU在各个任务之间来回的进行切换,并在切换的过程当中保存当前 进程的执行状态(保存蛋糕的执行过程). 进程与程序的区别:程序相当于菜谱,而进程相当于做菜的整个过程. 需要…
一.需求分析 有一批key已经写入到3个txt文件中,每一个txt文件有30万行记录.现在需要读取这些txt文件,判断key是否在数据仓库中.(redis或者mysql) 为空的记录,需要写入到日志文件中! 任务分工 1. 使用多进程技术,每一个进程读取一个txt文件 2. 使用协程技术,批量读取txt文件记录.比如一次性读取 2000条记录 注意:打开文件操作,最好在一个进程中,重复打开文件,会造成系统资源浪费! 二.完整代码 #!/usr/bin/env python3 # coding:…
并发:看起来像同时运行就是并发 并行:同一时间同时被执行叫做并行,最大并行数就是CPU核数 协程不是实实在在存在的物理基础和操作系统运行逻辑,只是程序员从代码层面避开了系统对遇到IO的程序会切走CPU资源的一种方法,在IO密集型任务中,通过协程,可以让CPU尽可能多的时间在本程序上执行,由于协程的原理是遇到IO及让cpu去执行其他代码,不停的来回切,在基于socket TCP通信中,这便为并发提供了土壤,使得单线程也能实现并发 下面我们就来看下如何通过服务端开多线程和协程实现高并发 服务端: i…
目录: 并发多线程 协程 I/O多路复用(未完成,待续) 一.并发多线程 1.线程简述: 一条流水线的执行过程是一个线程,一条流水线必须属于一个车间,一个车间的运行过程就是一个进程(一个进程内至少一个线程) 进程是资源单位 而线程才是cpu上的执行单位 2.线程的优点:共享资源.创建开销小 3.线程的模块开启方式之threading模块 multiprocess模块的完全模仿了threading模块的接口.执行如下图: 方式一: 函数式调用 from threading import Threa…
一,concurent.furtrue进程池和线程池 1.1 concurent.furtrue 开启进程,多进程&线程,多线程 # concurrent.futures创建并行的任务 # 进程池 ProcessPoolExecutor,ThreadPoolExecutor # 下面例子是Io密集型,所以时间上比叫多 from concurrent.futures import ProcessPoolExecutor import os,time,random def task(n): prin…