python多线程并发

Python多进程编程

懵懂的女人 提交于 2019-12-26 00:46:47
一、多线程    多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。 即使是单CPU的计算机,也可以通过不停地在不同线程的指令间切换,从而造成多线程同时运行的效果。   多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。如果多个任务可以 共享资源 ,特别是同时写入某个变量的时候,就需要解决同步的问题,比如多线程火车售票系统:两个指令,一个指令检查票是否卖完,另一个指令,多个窗口同时卖票,可能出现卖出不存在的票。   在并发情况下,指令执行的先后顺序 由内核决定 。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。因此要考虑多线程同步的问题。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。 详情请看: Linux多线程与同步 1、thread模块 2、threading模块 threading.Thread 创建一个线程。 给判断是否有余票和卖票,加上互斥锁,这样就不会造成一个线程刚判断没有余票,而另外一个线程就执行卖票操作。 #! /usr/bin/python #-* coding: utf-8 -* # __author__ ="tyomcat" import threading import time import os

Python多进程编程

假装没事ソ 提交于 2019-12-26 00:46:10
一、多线程    多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。 即使是单CPU的计算机,也可以通过不停地在不同线程的指令间切换,从而造成多线程同时运行的效果。   多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。如果多个任务可以 共享资源 ,特别是同时写入某个变量的时候,就需要解决同步的问题,比如多线程火车售票系统:两个指令,一个指令检查票是否卖完,另一个指令,多个窗口同时卖票,可能出现卖出不存在的票。   在并发情况下,指令执行的先后顺序 由内核决定 。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。因此要考虑多线程同步的问题。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。 详情请看: Linux多线程与同步 1、thread模块 2、threading模块 threading.Thread 创建一个线程。 给判断是否有余票和卖票,加上互斥锁,这样就不会造成一个线程刚判断没有余票,而另外一个线程就执行卖票操作。 #! /usr/bin/python #-* coding: utf-8 -* # __author__ ="tyomcat" import threading import time import os

python中线程和进程的简单了解

吃可爱长大的小学妹 提交于 2019-12-25 19:28:46
一、操作系统、应用程序   1.硬件:硬盘、cpu、主板、显卡........   2.装系统(本身也是一个软件):     系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合。   3.安装软件:各种应用程序 二、并发和并行   并发:伪,由于执行速度特别快,人感觉不到停顿   并行:真,创建多个对象同时操作 三、线程、进程   1.单进程、单线程的应用程序     print("asd")   2.到底什么是线程、进程     python中没有这两个,是python调用的操作系统的线程和进程   3.单进程、多线程的应用程序 import threading    #两个进程 print("start") def func(arg): print(arg) t = threading.Thread(target=func,args=("......",)) t.start() print("end") # start # ...... # end     一个应用程序(软件),可以有多个进程(默认只有一个),一个进程中可以创建多个线程(默认一个)   总结:     1.操作系统帮助开发者操作硬件     2.程序员写好代码在操作系统上运行(依赖解释器) 1.线程的基本使用 import threading def func(arg):

python 并发 中线程和进程相关

别说谁变了你拦得住时间么 提交于 2019-12-24 19:14:37
1.操作系统/应用程序   a : 硬盘 , CPU , 主板 , 显卡 , 内存 , 电源 ...   b.装系统 (软件)     系统就是一个由程序员写出来的软件 , 该软件用于控制计算机的硬件 , 让他们之间相互进行配合。   c.安软件 (安装应用程序)     QQ     百度云     pycharm     .... 2.操作中的"并发" ('并行')     并发 , 伪 , 由于执行速度特别快 , 人感觉不到停顿。     并行 , 真 , 创建10个人同时操作。 3.其他语言线程 , 进程   a. 单进程 , 单线程的应用程序       print('666')   b.到底什么是线程 ? 什么是进程 ?       python自己没有这个点西 , python中调用的操作系统的线程和进程   c.单进程 , 多进程的应用程序     代码: import threadin print('666') def func(arg): print(arg) t = threading.Thread(target=func) t.start() print('end') 一个应用程序 (软件) , 可以有多个进程 (默认只有一个) , 一个进程中可以创建多个线程(默认一个) 。   d.故事 : 大神与甄嬛传西游记的故事   故事总结:       1

python进程、线程、协程

∥☆過路亽.° 提交于 2019-12-24 11:50:42
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心,它承担计算机的所有任务。 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配、任务的调度。 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专门的管理和控制执行程序的数据结构——进程控制块。 进程就是一个程序在一个数据集上的一次动态执行过程。 进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。 在早期的操作系统里,计算机只有一个核心,进程执行程序的最小单位,任务调度采用时间片轮转的抢占式方式进行进程调度。每个进程都有各自的一块独立的内存,保证进程彼此间的内存地址空间的隔离。 随着计算机技术的发展,进程出现了很多弊端,一是进程的创建、撤销和切换的开销比较大,二是由于对称多处理机(对称多处理机(SymmetricalMulti-Processing)又叫SMP,是指在一个计算机上汇集了一组处理器(多CPU)

Python并发编程一(多进程)

那年仲夏 提交于 2019-12-23 21:47:58
1.背景知识(进程、多道技术) 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 了解操作系统,详见: https://www.cnblogs.com/JackLi07/p/9226851.html #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个 cpu中的任意一个,具体由操作系统调度算法决定。 2.空间上的复用:如内存中同时有多道程序 3.时间上的复用:复用一个cpu的时间片 强调:遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样 才能保证下次切换回来时,能基于上次切走的位置继续运行 2.python并发编程之多进程(理论)   进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 2.1进程与程序的区别   程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。   需要强调的是

python多进程-----multiprocessing包

雨燕双飞 提交于 2019-12-23 21:47:20
multiprocessing并非是python的一个模块,而是python中多进程管理的一个包,在学习的时候可以与threading这个模块作类比,正如我们在上一篇转载的文章中所提,python的多线程并不能做到真正的并行处理,只能完成相对的并发处理,那么我们需要的就是python的多进程来完成并行处理,把所有的cpu资源都利用起来。multiprocessing的很大一部分与threading使用同一套API,只不过换到了多进程的环境。这里面要注意,对于多进程来说,win32平台和unix平台差别很大,我们最好在linux上完成实现。 使用这些共享API时,我们应该注意以下问题(目前这是我能想到的,以后遇到再扩充): 1、对join的处理 根据Unix环境高级编程中对进程控制一章的描述,当某个进程fork一个子进程后,该进程必须要调用wait等待子进程结束发送的sigchld信号,对子进程进行资源回收等相关工作,否则,子进程会成为僵死进程,被init收养。所以,在multiprocessing.Process实例化一个对象之后,该对象有必要调用join方法,因为在join方法中完成了对底层wait的处理,源码如下: def join(self, timeout=None): ''' Wait until child process terminates ''' assert

python 进程 线程

一笑奈何 提交于 2019-12-23 07:08:01
1.概念 进程 线程 # 进程 就是一个程序在一个数据集上的一个动态执行过程 是最小的资源单元 # 进程是由 程序 数据集 进程控制块组成 本质上是一段程序的运行过程 # 1. 一个程序至少有一个进程,一个进程至少有一个线程.(进程可以理解成线程的容器) # # 2. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 # # 3. 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和 # 程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 # # 4. 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. # 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程 # 自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)但是 # 它可与同属一个进程的其他的线程共享进程所拥有的全部资源. # 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. # 线程 :降低上下文切换的消耗 提高系统的并发性 是最小执行单元 # python GIL # 无论你启多少个线程,你有多少个cpu,

Python学习笔记九(UDP套接字和并发编程)

霸气de小男生 提交于 2019-12-23 05:46:02
一、UDP套接字 服务端 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("127.0.0.1",8080)) while True: data,client_addr = server.recvfrom(1024) server.sendto(data.upper(),client_addr) 客户端 from socket import * client = socket(AF_INET,SOCK_DGRAM) while True: msg = input(">>").strip() client.sendto(msg.encode("utf-8"),("127.0.0.1",8080)) data,server_addr = client.recvfrom(1024) print(data.decode("utf-8")) 二、进程相关定义 进程是指程序的运行过程。每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。 多道技术:内存中同时存入多个程序,cpu从一个进程快速切换到另一个,使得每个进程各自运行几十或几百毫秒,虽然在一个时刻,一个cpu只执行了一个任务,但1秒内,cpu却可以运行多个进程,给人带来并行的错觉,即伪并发

python ==》 并发编程之多进程

╄→尐↘猪︶ㄣ 提交于 2019-12-23 04:34:28
1.什么是进程:  回答: 正在进行的一个过程或者说一个任务,而 这个过程就叫做进程。 1.1 进程与程序的区别:  回答: 程序仅仅是一堆代码而已,而进程指的是程序的运行过程。 2.并发与并行。 回答:无论是并行还是并发,在用户看来都是 同时 运行的, 不管是进程还是线程,都只是一个任务而已,真实干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能运行一个任务。  2.1: 并发什么意思:  回答:并发是伪并行,即看起来是同事运行。单个cpu+多道技术就可以实现并发。(并行也属于并发) 2.2: 并行什么意思:  回答:并行就是同时运行,只有具备多个cpu才能实行并行。 3.同步 与 异步 3.1什么是同步:  同步执行:一个进程在执行某个任务是,另外一个进程必须等待其执行完毕,才能继续执行  异步执行:一个进程在执行某个任务时,另外一个进程无需等待其执行完毕,就可以继续执行,当有消息返回时,系统会通知后者进行同步通信,  打电话时就是同步通信,发短信时就是异步通信。 一、python 并发编辑之多进程 1.1multiprocessing 模块介绍   python 中的多线程无法利用多核优势,如果想要充分地使用多核cpu的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。python提供了非常好用的多进程包,这个包是: