amazingbo 2019-12-09
''' 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字符的字符串。这个键的用途是为涉及网络连接的底层进程间通信提供安全性,这类连接只有在具有相同的身份验证键时次啊能成功(了解) ------ '''