python学习日记二

发布时间:2026/10/14 17:23:16
python学习日记二 python学习日记二进程、线程和协程有什么区别进程是操作系统分配资源和隔离运行环境的单位线程是进程中的执行单位(是工作的最小单元)。一个进程可以有多个线程它们共享地址空间但各自有执行栈等状态。协程则由程序保存执行状态在需要等待时暂停之后再从原位置恢复。并发编程多线程:import threading#创建线程t threading.Tread(target 方法名, args 传递的参数)t.start #开始线程多进程:import multiprocessing#创建进程(进程创建之后在进程中还会创建一个线程)if _name_ ‘_main_’t multiprocessing.Process(target 方法名,args 传递的参数)t.start() #开始进程#在windows系统中多进程需要if _name_ ‘_main_’否则会报错,因为在创建进程的时候Windows内部基于spawn创建进程相当于启动一个全新的 Python 进程重新导入脚本。Windows运行伪代码父进程跑到 p.start()│ spawn 新进程▼新进程重新 import 这个脚本│├── 又执行到 p.start() ← 又创建新进程│ ││ ▼│ 又 spawn 新进程│ ││ └── 又 import又 p.start()…│└── 无限循环而Linux系统不会报错是因为Linux内部实现是fork就是把当前进程原样复制一份。Linux运行伪代码父进程已经运行到 p.start()│ fork()▼子进程父进程的完整副本│└── 直接执行 work()多线程和多进程都能够提高运行的效率但是多进程的开销要比多线程开销要大。那就引出了一个新的问题是不是多线程一定要比多进程要好呢想要搞清楚就要先明白python中的GIL锁(全局解释器锁)GIL锁的作用保证让一个进程中同一时刻只能有一个线程可以被CPU调用。所以如果想要利用好计算机的多核优势让CPU同时处理一些任务就适合多进程开发即时消耗的资源会较大不需要利用计算机的多核优势那只需要创建多线程就好了。在常见的程序开发过程中计算操作需要使用CPU多核优势IO操作不需要利用CPU多核操作所以计算密集型用多进程例如大量的数据计算累加、累乘。IO密集型用多线程例如文件的读写、网络数据传输。psIO是指输入输出操作。Input输入从外部读数据进来Output输出把数据写到外部去多线程开发线程的常见方法t.start()标识当前线程准备就绪(等待CPU的调度)start会从主线程创建一个子线程去处理任务主线程会继续向下运行。如果没有join就会在代码的最后等待子线程执行完毕之后再结束。t.join():会等待当前线程的任务执行完毕后再向下继续执行。join主线程会等待创建的子线程执行完毕之后主线程才会继续向下运行t.setDaemon(布尔值)守护进程布尔值为True则主线程执行完毕子线程也会自动关闭布尔值为False则主线程会等待子线程执行完毕之后才结束。t.setName()设置线程名称设置名称必须要在start之前设置。自定义线程类importthreadingclassMyThread(threading.Thread):defrun(self):print(执行此线程,self._args)tMyThread(args(100,))t.start()