pytnon—线程,进程

一、what线程,what进程

  1、进程

    是资源的整合。一个程序对于操作系统来说就是一个进程、例如打开浏览器、打开word等都是打开一个进程。

  2、线程

  是程序里面的最小执行单元。帮助进程干活的,线程之间相互独立

    多线程多用于处理IO密集型任务频繁写入读出,cpu负责调度,消耗的是磁盘空间

  3、线程是包含在一个进程里面的,一个进程可以有多个线程

  4、一个进程里面默认有一个线程

  5、主线程与子线程,一个程序默认有一个主线程,由主线程来启动子线程

导入模块

import threading

传统方式(单线程)

def down_load():
    time.sleep(5)
    print('运行完成')
    
for i in range(3):
    down_load()

多线程方式

for i in range(3):
    t=threading.Thread(target=down_load)            #实例化一个线程
    t.start()                                       #开始运行
  down_load不要带(),不然属于自己调用了

线程之间相互独立
t1=time.time()
for i in range(3):
    t=threading.Thread(target=down_load)            #实例化一个线程
    t.start()                                       #开始运行

print('运行时间',time.time()-t1)

  上面的代码,总共有4个线程,循环里面启动了3个线程,还有一个主线程在运行所以结果如下

主线程运行结束打印运行时间,后等待子线程结束

运行时间 0.0009999275207519531
运行完成
运行完成
运行完成

查看当前线程数线程

print(threading.active_count())                 #查看    线程数
print(threading.current_thread())               #查看  当前线程
主线程等待子线程结束(并行)
def down_load():
    time.sleep(5)
    print('运行完成')


# 多线程
t1=time.time()
for i in range(3):
    t=threading.Thread(target=down_load)
    t.start()
    # t.join()                                      #这里是树形结构不是并行结构
# t.join()                                          #这里等待的是最后一个线程结束的时间

while threading.activeCount()!=1:                  #主线程等待子线程结束
    pass
 

猜你喜欢

转载自www.cnblogs.com/cwl-bj/p/12683621.html