python是怎么处理并发编程的(实用技巧)

Posted mayite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python是怎么处理并发编程的(实用技巧)相关的知识,希望对你有一定的参考价值。

在处理并发编程之前我们先来了解一下基础知识,这是我们并发编程问题的核心

1、什么是程序?什么是进程?
  程序说白了就是一堆文件
  进程就是一个正在执行的过程/程序

  所以说进程是一个抽象的概念
  这个概念起源操作系统

2、什么是操作系统
  定义:
    操作系统是位于计算机硬件与应用软件之间
    用于协调、管理、控制计算机硬件与软件的资源的一种控制程序

3、操作系统的两大作用:
  1、把复杂丑陋的硬件操作都封装成美丽的接口,提供给应用程序使用
  2、把进程对硬件的竞争变的有序


4、多道技术
  多道的产生背景是想要在单个cpu的情况下实现多个进程并发执行的效果

  空间上的复用 (多道程序复用内存的空间)
  时间上的复用 (多道程序复用CPU时间)
  cpu遇到IO操作要切换(提升效率)
  一个进程占用cpu时间过长也切(降低效率)

  进程与进程之间的内存空间是互相隔离的

 

python并发编程之多进程

1 什么是进程

一个进程就是 一个正在进行的程序或者任务

2 进程与程序的区别

程序是一堆代码,或者说一个文件, 进程是程序的运行过程

需要注意的是:qq是一个程序,我在电脑上用qq登陆马化疼的qq,同时又登陆了马化腾大媳妇的qq,这是两个进程

3 并发与并行 

无论是并行还是并发,在用户看来都是‘同时‘运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务

  并发:单cpu,是伪并行,即看起来是同时运行,其实不是,单个cpu+多道技术就可以实现并发

  比如你可以一边看电视同事吃饭 

  并行 :同时运行,只有具备多个cpu才能实现并行

  

 单核下,可以利用多道技术,多个核,每个核也都可以利用多道技术(多道技术是针对单核而言的

         有四个核,六个任务,这样同一时间有四个任务被执行,假设分别被分配给了cpu1,cpu2,cpu3,cpu4,

         一旦任务1遇到I/O就被迫中断执行,此时任务5就拿到cpu1的时间片去执行,这就是单核下的多道技术

         而一旦任务1的I/O结束了,操作系统会重新调用它(需知进程的调度、分配给哪个cpu运行,由操作系统说了算),可能被分配给四个cpu中的任意一个去执行

  技术分享图片

所有现代计算机经常会在同一时间做很多件事,一个用户的PC(无论是单cpu还是多cpu),都可以同时运行多个任务(一个任务可以理解为一个进程)。

    启动一个进程来杀毒(360软件)

    启动一个进程来看电影(暴风影音)

    启动一个进程来聊天(腾讯QQ)

所有的这些进程都需被管理,于是一个支持多进程的多道程序系统是至关重要的

多道技术概念回顾:内存中同时存入多道(多个)程序,cpu从一个进程快速切换到另外一个,使每个进程各自运行几十或几百毫秒,这样,虽然在某一个瞬间,一个cpu只能执行一个任务,但在1秒内,cpu却可以运行多个进程,这就给人产生了并行的错觉,即伪并发,以此来区分多处理器操作系统的真正硬件并行(多个cpu共享同一个物理内存)

 














以上是关于python是怎么处理并发编程的(实用技巧)的主要内容,如果未能解决你的问题,请参考以下文章

探索并发编程------ Java多线程开发技巧

python基础-并发编程02

Python核心并发编程之Futures

python面试题 -- 网编并发

python经典书籍:Python编程实战 运用设计模式并发和程序库创建高质量程序

python stackless 怎么多线程并发