欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

十、Python入门-多线程

程序员文章站 2022-03-10 11:45:25
多线程 进程 程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程:处理机制上的一次执行过程,他是一个动态的概念 状态:就绪态、运行态、阻塞态 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()