十、Python入门-多线程
程序员文章站
2022-06-21 23:46:57
多线程 进程 程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程:处理机制上的一次执行过程,他是一个动态的概念 状态:就绪态、运行态、阻塞态 CPU(4核)可以同时执行4个线程 线程 进程中包含若干个线程,进程作为分配资源的基本单位,线程作为独立运行和独立调度的基本单位 ......
多线程
进程
程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念
进程:处理机制上的一次执行过程,他是一个动态的概念
状态:就绪态、运行态、阻塞态
cpu(4核)可以同时执行4个线程
线程
进程中包含若干个线程,进程作为分配资源的基本单位,线程作为独立运行和独立调度的基本单位
多线程
程序执行时,程序本身就是主线程,手动创建的叫子线程,他们的关系是父子进程
import threading import time def run1(name): while(true): print(name,"**") time.sleep(1) def run2(name): while(true): print(name,"===") time.sleep(3) #创建线程 t1=threading.thread(target=run1,args=("t1",)) t2=threading.thread(target=run2,args=("t2",)) t1.start() #启动线程 t2.start() # 11.4 t1.join() #阻塞等待t1结束并回收资源 t2.join() #阻塞等待t2结束并回收资源
线程锁
保护共享资源
import threading import time lock=threading.lock() #创建一个线程锁 num=100 def run(name): global num #设置num为全局变量,只能放在里面 while(true): lock.acquire() #上锁 if(num==0): break num=num-1 print("线程",name,"目前num:",num) lock.release() #释放锁 time.sleep(1) #创建线程 for i in range(5): t=threading.thread(target=run,args=(i+1,)) t.start()
多进程
if __name__ == '__main__': __name__变量为'__main__'时才执行,本文件时成立,当被作为模块引入时不成立
from multiprocessing import process import time def run(name): print("进程",name,"执行了") time.sleep(5) #创建进程 if __name__ == '__main__': #windows进程要写在里面 p1=process(target=run,args=("p1",)) p2=process(target=run,args=("p2",)) p1.start() p2.start()
下一篇: 在GBA上写光线追踪:定点数运算库