python-多任务编程
琰婧
努力学习。
展开
-
python-进程和线程的对比
1. 进程和线程的对比的三个方向关系对比区别对比优缺点对比2. 关系对比线程是依附在进程里面的,没有进程就没有线程。一个进程默认提供一条线程,进程可以创建多个线程。3. 区别对比进程之间不共享全局变量线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 互斥锁或者线程同步创建进程的资源开销要比创建线程的资源开销要大进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位线程不能够独立执行,必须依存在进程中多进程开发比单进程多线程开发稳定性要强4. 优缺点对原创 2021-07-16 09:01:57 · 60 阅读 · 0 评论 -
python-死锁
1. 死锁的概念死锁: 一直等待对方释放锁的情景就是死锁说明:现实社会中,男女双方一直等待对方先道歉的这种行为就好比是死锁。死锁的结果会造成应用程序的停止响应,不能再处理其它任务了。2. 死锁示例需求:根据下标在列表中取值, 保证同一时刻只能有一个线程去取值import threadingimport time# 创建互斥锁lock = threading.Lock()# 根据下标去取值, 保证同一时刻只能有一个线程去取值def get_value(index): #原创 2021-07-16 09:01:52 · 290 阅读 · 0 评论 -
python-互斥锁
1.互斥锁的概念互斥锁: 对共享数据进行锁定,保证同一时刻只能有一个线程去操作。注意:互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。2. 互斥锁的使用threading模块中定义了Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁。互斥锁使用步骤:# 创建锁mutex = threading.Lock()# 上锁mutex.acquire()# ...这里编写代码能保证同一时刻只能有一原创 2021-07-15 16:44:59 · 321 阅读 · 0 评论 -
python-线程的注意点
1. 线程的注意点介绍线程之间执行是无序的主线程会等待所有的子线程执行结束再结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题2. 线程之间执行是无序的import threadingimport timedef task(): time.sleep(1) print("当前线程:", threading.current_thread().name)if __name__ == '__main__': for _ in range(5):原创 2021-07-15 16:29:37 · 171 阅读 · 0 评论 -
python-线程执行带有参数的任务
1. 线程执行带有参数的任务的介绍Thread类执行任务并给任务传参数有两种方式:args 表示以元组的方式给执行任务传参kwargs 表示以字典方式给执行任务传参2. args参数的使用示例代码:import threadingimport time# 带有参数的任务def task(count): for i in range(count): print("任务执行中..") time.sleep(0.2) else:原创 2021-07-15 16:00:26 · 241 阅读 · 0 评论 -
python-多线程的使用
1. 导入线程模块#导入线程模块import threading2. 线程类Thread参数说明Thread([group [, target [, name [, args [, kwargs]]]]])group: 线程组,目前只能使用Nonetarget: 执行的目标任务名args: 以元组的方式给执行任务传参kwargs: 以字典方式给执行任务传参name: 线程名,一般不用设置3. 启动线程启动线程使用start方法4. 多线程完成多任务的代码import thre原创 2021-07-15 15:10:15 · 142 阅读 · 0 评论 -
python-线程
1. 线程的介绍在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。2. 线程的概念线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度 ,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。3. 线程的作用多线程可以完成多任务多线程效果图:4. 小结线程是Python程序中实现多任务的另外一种方式,线程的执行需要cpu调度来完成。...原创 2021-07-15 15:07:42 · 52 阅读 · 0 评论 -
python-多进程的使用
1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目标任务名name:进程名字args:以元组方式给执行任务传参kwargs:以字典方式给执行任务传参Process创建的实例对象的常用方法:start():启动子进程实例(创建子进程)join():等待原创 2021-07-15 09:45:22 · 52 阅读 · 0 评论 -
python-进程执行带有参数的任务
1. 进程执行带有参数的任务的介绍前面我们使用进程执行的任务是没有参数的,假如我们使用进程执行的任务带有参数,如何给函数传参呢?Process类执行任务并给任务传参数有两种方式:args 表示以元组的方式给执行任务传参kwargs 表示以字典方式给执行任务传参2. args参数的使用示例代码:import multiprocessingimport time# 带有参数的任务def task(count): for i in range(count): pr原创 2021-07-15 09:45:14 · 756 阅读 · 0 评论 -
python-获取进程编号
1. 获取进程编号的目的获取进程编号的目的是验证主进程和子进程的关系,可以得知子进程是由那个主进程创建出来的。获取进程编号的两种操作获取当前进程编号获取当前父进程编号2. 获取当前进程编号os.getpid() 表示获取当前进程编号示例代码:import multiprocessingimport timeimport os# 跳舞任务def dance(): # 获取当前进程的编号 print("dance:", os.getpid()) # 获取当原创 2021-07-15 09:45:02 · 344 阅读 · 0 评论 -
python-进程
1. 进程的介绍在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。2. 进程的概念一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。注意:一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里原创 2021-07-15 09:45:09 · 61 阅读 · 0 评论