当前位置:   article > 正文

Python浅聊进程(multiprocessing)和线程(threading)_python multiprocessing threading

python multiprocessing threading

目录

一、进程(Process)

1.1、定义

1.2、类(Process)

1.3、把进程创成类

1.4、daemon属性

1.5、join方法

1.6、进程池(Pool)

1.7、进程间通信

二、线程(Thread)

2.1、定义

2.2、多线程编程

2.2.1、创建线程

2.2.2、线程隔离(Join方法)

2.2.3、互斥锁

2.2.4、Condition条件变量

2.2.5、线程间通信

2.2.6、后台线程


一、进程(Process)

1.1、定义

        进程是操作系统中用来描述程序运行时资源分配的最小单位。做个比喻,你在windows上一边敲代码一边听歌,这时候可以理解为有两个任务同步进行,也就是启动了两个进程。在单核CPU执行处理时,进程是按照顺序依次执行的,由于cpu执行速率很快,所以我们一般感知不到进程之间的切换。多核CPU实现了真正意义上的并行执行进程。

1.2、类(Process)

        创建进程时用的类

  格式:    P = multiprocessing.Process(target=调用对象,args=(调用对象实参1,调用对象实参2))

                P.start()   # 打开进程

1.3、把进程创成类

        我们也可以把进程创建成一个类,当p调用start()时,自动调用run()方法,举例如下:

 输出结果为:

1.4、daemon属性

        当子进程添加了Daemon属性后,当主进程结束的时候,子进程也会跟着结束。

1.5、join方法

        Join方法主要作用是阻塞当前进程,直到join方法的进程执行完,再执行父进程。

1.6、进程池(Pool)

        在程序构造过程中,我们可以使用进程池的方法批量构建子进程

         输出为:(建议用cmd命令框直接执行py文件,pycharmIDE不支持)

1.7、进程间通信

        进程之间需要数据通信时,可以用Queue方法来交换数据。在父进程中创建一个写数据子进程,和一个读数据子进程,如下图所示:

 结果如图:

二、线程(Thread)

2.1、定义

        在一个进程中,我们不仅仅只做一件事.比如打开音乐接收器,我们可能一边听歌,一边下载歌曲,这些都被统称为进程中的一些子任务,也就是线程。在执行多任务时,我们通常用三种方法来提高执行效率:多进程/多线程/多进程多线程方法。

2.2、多线程编程

        线程的运行状态:创建-》就绪等待使用-》运行-》阻塞-》删除

2.2.1、创建线程

        Python一共两个模块用来操作线程,分别为thread和threading,开发时常用后者。

        格式:T =  threading.Thread(target=调用对象,args=(调用对象实参1,调用对象实参2))

                   T.start()   # 打开线程

2.2.2、线程隔离(Join方法)

        为了保证子线程在主线程执行结束前优先结束,可以采取join方法,来保证子线程执行完后才会结束主线程。

2.2.3、互斥锁

        在线程同步执行获取数据的过程中,容易造成数据不同步现象,这时候可以给资源加锁,也就是说访问资源的线程必须通过锁才能访问。

2.2.4、Condition条件变量

        针对互斥锁的acquire和release方法外,多出了wait和notify方法,当一个线程进入wait方法等待执行时,先执行其余可执行线程。当可执行线程执行完后,配置并执行notify命令,此时将从剩余wait线程中进行选举,当其中一个线程继续执行时,其余wait线程继续等待。

Consumer(顾客端):

 Producer(商家处):

 主程序:

2.2.5、线程间通信

        当程序中有多个线程需要相互通信时,我们通过queue库的队列对线程之间的信息进行安全交换。创建Queue对象,线程是用put()向队列添加元素,用get()删除元素

2.2.6、后台线程

        默认情况下主线程退出后,子线程仍就会继续执行。如果希望主线程退出后子线程也退出,则需要使用setDeamon方法,设置子线程为后台进程。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/74885
推荐阅读
相关标签
  

闽ICP备14008679号