码迷,mamicode.com
首页 > 编程语言 > 详细

pytnon—线程,进程

时间:2020-04-12 10:56:25      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:主线程   back   port   pass   time   reading   word   tno   count   

一、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

 

 

 

 

 

pytnon—线程,进程

标签:主线程   back   port   pass   time   reading   word   tno   count   

原文地址:https://www.cnblogs.com/cwl-bj/p/12683621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!