Python学习笔记之一线程
发布时间:2021-11-22 14:09:09 所属栏目:大数据 来源:互联网
导读:目录 1.自定义进程2.进程与线程3.多线程4.Thread类方法5.多线程与多进程小Case6.Thread 的生命周期7.自定义线程8.线程共享数据与GIL(全局解释器锁)9.GIL 和 Lock10.线程的信号量总结 1.自定义进程 自定义进程类,继承Process类,重写run方法(重写Process的
目录 1.自定义进程2.进程与线程3.多线程4.Thread类方法5.多线程与多进程小Case6.Thread 的生命周期7.自定义线程8.线程共享数据与GIL(全局解释器锁)9.GIL 和 Lock10.线程的信号量总结 1.自定义进程 自定义进程类,继承Process类,重写run方法(重写Process的run方法)。 from multiprocessing import Process import time import os class MyProcess(Process): def __init__(self, name): ##重写,需要__init__,也添加了新的参数。 ##Process.__init__(self) 不可以省略,否则报错:AttributeError:'XXXX'object has no attribute '_colsed' Process.__init__(self) self.name = name def run(self): print("子进程(%s-%s)启动" % (self.name, os.getpid())) time.sleep(3) print("子进程(%s-%s)结束" % (self.name, os.getpid())) if __name__ == '__main__': print("父进程启动") p = MyProcess("Ail") # 自动调用MyProcess的run()方法 p.start() p.join() print("父进程结束") # 输出结果 父进程启动 子进程(Ail-38512)启动 子进程(Ail-38512)结束 父进程结束 2.进程与线程 多进程适合在CPU密集型操作(CPU操作指令比较多,如科学计算、位数多的浮点计算); 多线程适合在IO密集型操作(读写数据操作比较多的,比如爬虫、文件上传、下载) 线程是并发,进程是并行:进程之间互相独立,是系统分配资源的最小单位,同一个进程中的所有线程共享资源。 进程:一个运行的程序或代码就是一个进程,一个没有运行的代码叫程序。进程是系统进行资源分配的最小单位,进程拥有自己的内存空间,所以,进程间数据不共享,开销大。 进程是程序的一次动态执行过程。每个进程都拥有自己的地址空间、内存、数据栈以及其它用于跟踪执行的辅助数据。操作系统负责其上所有进程的执行,操作系统会为这些进程合理地分配执行时间。 线程:调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程的存在而存在,一个进程至少有一个线程,叫做主线程,多个线程共享内存(数据共享和全局变量),因此提升程序的运行效率。 (编辑:上海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |