python之并发编程
Posted GhostAnt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之并发编程相关的知识,希望对你有一定的参考价值。
'''
1.什么是进程?
进程是指正在执行的一个程序或任务,而负责执行任务的是CPU
2.进程和程序的区别
程序只是一段代码。
进程是指程序运行的过程。
3.并行与并发
并发:‘伪并行’,看起来是同时运行。单个CPU+多道技术就可以实现并发。
并行:同时允许,只有具备多个cpu才能实现并行。
单核下,可以利用多道技术。
多核下,每个核也都可以利用多道技术。(多道技术是针对单核来说的)
4.进程的三种状态
运行---就绪---阻塞
'''
同步、异步和阻塞、非阻塞
'''
1.同步:
在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。按照这个定义,起始绝大数函数都是同步调用。
2.异步:
异步的概念和同步相对。当一个异步调用发起时,调用者不能立刻得到结果,当该异步功能完成后,通过状态、通知或回调来通知调用者。
3.阻塞:
阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。函数只有在得到结果之后才会将阻塞的线程激活。
4.非阻塞:
与阻塞概念相对。指在不能立刻得到结果的情况下也会立刻返回,同时该函数不会阻塞当前线程
'''
'''
多进程
multiprocessing 模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数)。
multiprocessing 模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。
'''
'''
Process类
- 是一个创建进程的类,由该类实例化得到的对象,表示一个子进程中的任务。
ps:
- 需要使用关键字的方式来传参
- args指定为传给target函数的位置参数,是一个元组形式,必须有逗号
方法介绍:
------
1.p.start():启动进程、并调用该子进程中的p.run()
2.p.run():进程启动时运行的方法,正是它去调用target指定的函数,我们自定义类的类中一定要实现该方法
3.p.terminate():强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果p还保存了一个锁,那么锁也将不会被释放,进而导致死锁。
4.p.is_alive():如果p仍然允许,返回True
5.p.join([timeout])
------
属性介绍:
------
1.p.daemon:默认值为False,如果为True,代表p为后台运行的守护进程,当p的父进程终止时,p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置
2.p.name:进程的名字
3.p.pid:进程的pid
4.p.exitcode:进程在运行时为None,如果为-N,表示被信号N结束(了解)
5.p.authkey:进程的身份验证键,默认是由os.urandom()随机生成的32字符的字符串。这个键的用途是为涉及网络连接的底层进程间通信提供安全性,这类连接只有在具有相同的身份验证键时次啊能成功(了解)
------
'''
以上是关于python之并发编程的主要内容,如果未能解决你的问题,请参考以下文章