十、Python入门-多线程

多线程

进程

  程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念

  进程:处理机制上的一次执行过程,他是一个动态的概念

  状态:就绪态、运行态、阻塞态

  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()

 

posted @ 2020-04-15 16:33  Hecarim丶  阅读(276)  评论(0编辑  收藏  举报