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

进程线程

时间:2017-07-17 22:00:01      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:get   rgs   bsp   异步   区别   依次   tar   join   函数   

并发:在同一个时间段能同时执行多个程序的能力

进程:程序运行的状态,这个过程叫进程

进程组成:

  程序,数据集,进程控制快。进程控制块是记录进程的外部特征,是系统感知进程的唯一标识

  进程是最小的资源管理单元

线程:

  线程是进程下的最小执行单位。

  线程使用的是进程的资源

  线程一定在进程中,不存在独立的线程

  线程还有主线程,一个进程肯定有个主线程

  主线程可以开辟子线程

进程线程切换原则:

  操作者:操作系统

  原则:

    1.时间片

    2.遇到I/O操作切换(当程序卡在IO等待时,不会占用CPU资源)

    3.优先级切换

 

串行:  依次执行 多个线程 
并行:  同时执行多个任务的执行
并发:  切换任务的执行方式 并发
下图说明:
技术分享

同步异步:

  发送请求一直在等待结果的返回,收到结果之后才继续执行。这是同步

  发送请求但是并不会一直等待结果返回,程序就继续执行。这是异步

Python中的多线程多进程跟其他语言的区别:

  python在进程上有“一把锁”,同一时间只能有一个线程被执行。

  python没办法在一个进程下实现过个线程并行(不支持多核)

守护进程:

  必须在start前执行

  被守护的子线程会在主进程执行完毕后被直接结束,就算子线程没有执行完依然会被结束。

IO密集型任务:  程序存在大量 IO操作
计算密集型任务:程序存在大量计算操作(非IO操作)
 
总结:
Python的多线程处理 IO密集型任务 有优势  
对于处理 计算密集型的 没有优势,甚至不如不使用
import threading   #导入进程模块
import time
def foo(n):
    print("%s" %n)
    time.sleep(n)

def bar(n):
    print("%s" % n)
    time.sleep(n)
a=time.time()
t1=threading.Thread(target=foo,args=(2,))   #生成子进程对象  调用函数
t1.setDaemon(True)   #设置 T1子进程为守护进程
t1.start()   #执行子进程
t2=threading.Thread(target=bar,args=(5,))
t2.start()

#多线程对象调用

t1.join()
t2.join()   #join阻塞主线程,
print(time.time()-a)

 

 

 

进程线程

标签:get   rgs   bsp   异步   区别   依次   tar   join   函数   

原文地址:http://www.cnblogs.com/ldsly/p/7197399.html

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