一、程序、进程和线程的理解      

    程序:就相当于一个应用(app),例如电脑上打开的一个程序。
    进程:程序运行资源(内存资源)分配的最小单位,一个程序可以有多个进程。
    线程:cpu最小的调度单位,必须依赖进程而存在。线程没有独立资源,所有线程共享该进程的全部资源。线程的划分尺度比进程更小。

  关系:  

    一个程序至少有一个进程,一个进程至少有一个线程.

    资源:进程拥有独立资源,线程依赖于进程,没有独立资源,所有该进程的线程共享所在进程的所有资源。

    划分尺度:线程的划分尺度小于进程(资源比进程少),使得多线程程序并发性更高。

  优缺点: 

    线程:线程的执行开销小,但不利于资源的管理和保存。
    进程:多个进程之间相互独立,不利于进程间信息交互。进程拥有独立资源。
      在设计数据交互频繁的场景,多进程比多进程更加适合。
      在并发程度上,多进程比多线程的效率更高。

二、如何通过多线程和多进程提高程序的运行速度?

    a、提高程序的运行速度的第一种方法:提高cpu的利用率。

        解决的方式:cpu不用休息就可以做到。
        现在我们的程序一般只有一个主线程
        如果在程序中遇到:阻塞。一旦阻塞了,cpu就休息了。休息的这段时间,就浪费了cpu的资源。
        有两种方式可以阻塞:1、time.sleep()    2、遇到io操作
        多线程:多个任务。cpu会在这多个任务之间切换,如果其中一个线程阻塞了,cpu不会休息,会处理其他线程。

    b、提高程序运行速度第二种方法:增加cpu处理的个数,让每个cpu处理一个任务。

        cpu是多核的。---利用cpu的多核进行解决。---cpu每一个核处理一个进程。--用多进程去处理。

    c、并发和并行。

三、Python中的threading模块

    1、开启多线程

        a、使用threading模块

          

        b、 使用自定线程类的形式来创建线程

            1、需要继承threading.Thread  

            2、保证父类的init方法能够被调用

            3、步骤

                继承Thread

                重写run方法
                实例化线程类,就相当于创建一个线程,用这个对象调用start()方法就可以启动这个线程
                如果自定义线程类要实现init方法,必须先调动父类的init方法。

    2、查看线程的名称

            使用线程对象.name查看(默认是Thread-1,Thread-2....)
            自定义名称:其实就是给self.name赋值

    3、查看线程的数量

            threading.enumerate()--可以查看当前进程中的线程的数量

            

python 爬虫 多线程 多进程的更多相关文章

  1. 静听网+python爬虫+多线程+多进程+构建IP代理池

    目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但是禁ip ...

  2. python进阶--多线程多进程

    一.线程和进程 进程是拥有独立内存,能够独立运行的最小单位,也是程序执行的最小单位,线程是程序运行过程中,一个单一的顺序控制流程,是程序执行流的最小单位,一个进程至少包含一个线程,多线程共享进程的内存 ...

  3. Python爬虫 | 多线程、多进程、协程

    对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了 ...

  4. python爬虫——多线程+协程(threading+gevent)

    上一篇博客中我介绍了如何将爬虫改造为多进程爬虫,但是这种方法对爬虫效率的提升不是非常明显,而且占用电脑cpu较高,不是非常适用于爬虫.这篇博客中,我将介绍在爬虫中广泛运用的多线程+协程的解决方案,亲测 ...

  5. Python之多线程多进程

    (一)进程 1.定义 进程:就是一组资源的集合.一个程序就是一个进程. 线程是用来干活的,只有进程的话是没办法运行的,进程里其实是线程在具体干活的. import threading import t ...

  6. sumafan:python爬虫多线程爬取数据小练习(附答案)

    抓取 https://www.cnbeta.com/ 首页中新闻内容页网址, 抓取内容例子: https://hot.cnbeta.com/articles/game/825125 将抓取下来的内容页 ...

  7. python爬虫多线程编程

    #使用了线程库 import threading from queue import Queue from bs4 import BeautifulSoup import json import re ...

  8. Python爬虫教程

    Python爬虫(1):基本原理 Python爬虫(2):Requests的基本用法 Python爬虫(3):Requests的高级用法 Python爬虫(4):Beautiful Soup的常用方法 ...

  9. python爬虫入门八:多进程/多线程

    什么是多线程/多进程 引用虫师的解释: 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期. 进程(有时被称为重量级进程)是 ...

随机推荐

  1. WebStorm 使用经验

        1.优点 1.1 可自动提示图片的宽高 1.2 标签名字可重构(改名) 1.3 css重命名 1.4 可把内联的style移到外部 1.5 可实现声明提升 1.6 设置项是可搜索的 1.7 有 ...

  2. 【ABP】从零开始学习ABP_入门介绍

    本文介绍自己入坑ABP的过程,一些ABP的相关文章.QQ群,以及ABP Zero示例项目的运行. 背景 作为一个半路出家学习编程的新人,之前工作中也断断续续写过一些代码,但底层核心一直没机会学习,所以 ...

  3. 【pwnable.kr】blackjack

    又一道pwnable nc pwnable.kr 9009 读题找到源代码在:http://cboard.cprogramming.com/c-programming/114023-simple-bl ...

  4. Tess4j/Tess4j 多线程调用 过程中报错问题记录 Invalid memory access

    最近使用 Tess4j 做一些 OCR图片文字识别的代码. 然后想当然的将这个 ITesseract ocr_robot = new Tesseract(); 作为了工具类做成了成员变量. 当多线程调 ...

  5. No 'Access-Control-Allow-Origin' header is present on the requested resource——Web Api跨域问题

    最近使用C#写了一个简单的web api项目,在使用项目中的.cshtml文档测试的时候没有任何问题,但是在外部HBuilder上面编写.html通过Ajax调用web api路径时报错: No 'A ...

  6. Springboot跨域 ajax jsonp请求

    SpringBoot配置: <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  7. JAVA-数据类型-复习

    JAVA-数据类型-复习 Java中,一共有8种数据类型,4种整型,2种浮点型,1种用于表示Unicode编码的字符单元的字符类型char,1种布尔类型. 整型 类型 存储需求(字节)一个字节包含8个 ...

  8. C# 借助CommandLine 写命令行工具 在数据库中创建job

    首先需要用到  CommandLine.dll 提供两个下载链接,云盘是我自己上传的,也就是我在用的 http://commandline.codeplex.com/ https://pan.baid ...

  9. com.alibaba.druid.pool.DruidDataSource

    https://www.cnblogs.com/wuyun-blog/p/5679073.html DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PR ...

  10. ZOJ - 3870 Team Formation(异或)

    题意:给定N个数,求这N个数中满足A ⊕ B > max{A, B})的AB有多少对.(A,B是N中的某两个数) 分析: 1.异或,首先想到转化为二进制. eg:110011(A)和 1(B)- ...