zoukankan      html  css  js  c++  java
  • python爬虫番外篇(一)进程,线程的初步了解

     原文地址https://www.cnblogs.com/zhaof/p/6994991.html

    整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇

    一、进程

    程序并不能单独和运行只有将程序装载到内存中,系统为他分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别在于:程序是指令的集合,它是进程的静态描述文本;进程是程序的一次执行活动,属于动态概念。

    例如我们写一个hello程序,当这个程序再操作系统上运行的时候,操作系统会给我们一种假象,好像系统上就这一个程序在运行。程序看上去是独占的使用处理器,主存,和IO设备,处理器看上去就像在不间断的执行程序中的指令,即该程序的代码和数据是操作系统内存中唯一的对象。这其实就是通过进程实现的。

    进程的概念

    进程是操作系统对一个正在运行的程序的一种抽象。即进程是处理器,主存,IO设备的抽象
    操作系统可以同时运行多个进程,而每个进程都好像在独占的使用硬件

    并发运行

    并发运行:一个进程的指令和另外一个进程的指令是交错执行的。

    上下文切换
    CPU看上去像是在并发的执行多个进程,这是通过处理器在进程之间切换来实现的,操作系统实现这种交错执行的机制称为上下文切换

    操作系统保持跟踪进程运行所需的所有状态信息。这种状态,就是上下文。
    在任何一个时刻,操作系统都只能执行一个进程代码,当操作系统决定把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从它上次停止的地方开始。

    我们还通过hello这个程序进行理解这个过程(环境为linux):

    shell进程和hello进程。

    1. 开始,shell进程在运行,等待命令行的输入
    2. 执行hello程序,shell通过系统调用来执行我们的请求,这个时候系统调用会讲控制权传递给操作系统。操作系统保存shell进程的上下文,创建一个hello进程以及其上下文并将控制权给新的hello进程。
    3. hello进程终止后,操作系统恢复shell进程的上下文,并将控制权传回给shell进程
    4. shell进程继续等待下个命令的输入

    二、线程

    线程的概念

    线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位

    一个进程实际上可以由多个线程的执行单元组成。每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

    由于在实际的网络服务器中对并行的需求,线程成为越来越重要的编程模型,因为多线程之间比多进程之间更容易共享数据,同时线程一般比进程更高效

    三、并发和并行的概念

    并发指的是同时具有多个活动的系统

    并行值得是用并发来使一个系统运行的更快。并行可以在操作系统的多个抽象层次进行运用

  • 相关阅读:
    sftp 使用笔记
    python-day001获取mac地址
    tomcat 修改端口
    mysql 封装与使用
    redis 封装使用
    centos7安装jenkins
    securecrt设置编码、字体、编码
    linux操作系统上路由管理维护
    ElasticSearch操作和使用指南
    sqlyog连接mysql错误码2058
  • 原文地址:https://www.cnblogs.com/111testing/p/10325456.html
Copyright © 2011-2022 走看看