Python3 异步编程之进程与线程-1

Python3 异步编程之进程与线程-1

一、了解进程间通信

  • 进程间通信
  • 进程
  • 线程
  • 线程 vs 进程
  • IO模型
  • 并发 vs 并行
  • 异步 vs 同步

二、多线程与多进程的用法

  • 计算密集型 vs I/O密集型
  • GIL
  • 多线程
  • 多进程

三、协程的好处与用法

  • 协程
  • yield
  • yield from

四、进程间通信-IPC 01

  • 管道:无名管道和命名管道(FIFO)
  • 消息队列
  • 信号量
  • 共享存储
  • Socket
  • Streams

相关定义:

管道:

命名管道:

消息队列:

信号量:

共享内存:

元子操作:

五、进程特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性

六、进程状态

  • 运行 running   占用了CPU正在运行
  • 就绪 ready     等待CPU
  • 阻塞 blocked   暂时不具备运行条件,即使CPU空闲

    相关定义:

    进程控制块:

Unix系统中的几个进程控制操作:

线程:

线程之间共享:

线程的独立信息:

线程的创建:

七、了解进程间通信02

I/O模型

  • 阻塞式
  • 非阻塞式
  • I/O复用
  • 信号驱动式
  • 异步I/O

相关定义:

I/O操作的两个阶段:

阻塞式I/O:

非阻塞式I/O:

I/O复用:

信号驱动式:

异步I/O:

并发和并行:

异步与同步:

异步的实现:

处理多任务操作:

  • 多进程/多线程
  • I/O模型
  • 协程

 多线程、多进程实现模式:master  worker模式

master分配任务
多进程缺点:创建进程资源需要多frok()函数
多线程缺点:某个线程出问题,整个挂掉

原文地址:http://blog.51cto.com/445153/2136973

时间: 2024-10-12 23:27:01

Python3 异步编程之进程与线程-1的相关文章

(转)iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP

######################################################### 进程与线程 进程和线程都是由操作系统分配和调度的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性. 进程是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更

并发编程之进程与线程

并发编程之进程与线程 2.1 线程与进程 2.1.1 进程 2.1.2 线程 2.1.3 二者对比 2.2 并行与并发 2.3 应用 2.1 线程与进程 2.1.1 进程 程序指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理IO的. 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程. 进程就可以视为程序的一个实例.大部分程序可以同时运行多个实例进程(例如记

Java并发编程:进程和线程

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

走近并发编程之一 进程和线程

并发与并行,进程与线程不仅是操作系统中及其重要的概念,也是并发编程入门 必须要理解的核心知识. 什么是并发?并发与并行的区别 顺序编程:程序中的所有事物在任意时刻都只能执行一个步骤 并发:在同一时间段内,需要处理多个任务,而在每个时间点又只能处理一个,这就是并发. 假设我们要把多个任务分配给处理机,如果这台机器有多个处理器,显然可以同时执行这些任务,这就是并行. 不同于并行,并发的目的旨在最大限度的提高程序在单处理器上的效率.前者是在物理上的同时发生,而并发是在逻辑上的同时发生.如图,如果要在同

使用IProgress实现异步编程的进程通知

在异步编程中,有时候希望把进度展示出来,借助IProgress<in T>可以实现. IProgress<in T>只提供了一个方法void Report(T value),通过Report方法把一个T类型的值报告给IProgress,然后IProgress<in T>的实现类Progress<in T>的构造函数接收类型为Action<T>的形参,通过这个委托让进度显示在UI界面中. 首先写一个方法,使用Report方法报告进度. public

9)网络并发 编程、进程、线程和协程

并发网络 Server: #!/usr/bin/env python#-*-conding:utf-8-*-import socketsk = socket.socket()sk.bind(('127.0.0.1',9009))sk.listen()conn,addr = sk.accept()conn.send(b'heooo')msg = conn.recv(1024)print(msg)conn.close()sk.close() Client: #!/usr/bin/env python

&lt;史上最强&gt;深入理解 Python 异步编程(上)

前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成了 Python 生态下一阶段的主旋律.如新兴的 Go.Rust.

深入理解 Python 异步编程(上)

http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成

异步编程和线程的使用(.NET 4.5 )

C#:异步编程和线程的使用(.NET 4.5 ) 异步编程和线程处理是并发或并行编程非常重要的功能特征.为了实现异步编程,可使用线程也可以不用.将异步与线程同时讲,将有助于我们更好的理解它们的特征. 本文中涉及关键知识点 1. 异步编程 2. 线程的使用 3. 基于任务的异步模式 4. 并行编程 5. 总结 异步编程 什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程.通常情况下,C#程序从Main方法开始,当Main方法返回时结束.所有的操作都是按顺序执行的.执行操