赞
踩
目录
进程是操作系统中用来描述程序运行时资源分配的最小单位。做个比喻,你在windows上一边敲代码一边听歌,这时候可以理解为有两个任务同步进行,也就是启动了两个进程。在单核CPU执行处理时,进程是按照顺序依次执行的,由于cpu执行速率很快,所以我们一般感知不到进程之间的切换。多核CPU实现了真正意义上的并行执行进程。
创建进程时用的类
格式: P = multiprocessing.Process(target=调用对象,args=(调用对象实参1,调用对象实参2))
P.start() # 打开进程
我们也可以把进程创建成一个类,当p调用start()时,自动调用run()方法,举例如下:
输出结果为:
当子进程添加了Daemon属性后,当主进程结束的时候,子进程也会跟着结束。
Join方法主要作用是阻塞当前进程,直到join方法的进程执行完,再执行父进程。
在程序构造过程中,我们可以使用进程池的方法批量构建子进程
输出为:(建议用cmd命令框直接执行py文件,pycharmIDE不支持)
进程之间需要数据通信时,可以用Queue方法来交换数据。在父进程中创建一个写数据子进程,和一个读数据子进程,如下图所示:
结果如图:
在一个进程中,我们不仅仅只做一件事.比如打开音乐接收器,我们可能一边听歌,一边下载歌曲,这些都被统称为进程中的一些子任务,也就是线程。在执行多任务时,我们通常用三种方法来提高执行效率:多进程/多线程/多进程多线程方法。
线程的运行状态:创建-》就绪等待使用-》运行-》阻塞-》删除
Python一共两个模块用来操作线程,分别为thread和threading,开发时常用后者。
格式:T = threading.Thread(target=调用对象,args=(调用对象实参1,调用对象实参2))
T.start() # 打开线程
为了保证子线程在主线程执行结束前优先结束,可以采取join方法,来保证子线程执行完后才会结束主线程。
在线程同步执行获取数据的过程中,容易造成数据不同步现象,这时候可以给资源加锁,也就是说访问资源的线程必须通过锁才能访问。
针对互斥锁的acquire和release方法外,多出了wait和notify方法,当一个线程进入wait方法等待执行时,先执行其余可执行线程。当可执行线程执行完后,配置并执行notify命令,此时将从剩余wait线程中进行选举,当其中一个线程继续执行时,其余wait线程继续等待。
Consumer(顾客端):
Producer(商家处):
主程序:
当程序中有多个线程需要相互通信时,我们通过queue库的队列对线程之间的信息进行安全交换。创建Queue对象,线程是用put()向队列添加元素,用get()删除元素
默认情况下主线程退出后,子线程仍就会继续执行。如果希望主线程退出后子线程也退出,则需要使用setDeamon方法,设置子线程为后台进程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。