python下的线程 进程,以及如何实现并发服务器

在一个CPU(一核)的电脑上,

程序的运行是并发运行的,调度的算法叫时间片轮转法,也叫轮询法

在多CPU(多核)的电脑上,一个CPU跑一个程序,刚程序运行数量小于核心数时,程序是并行的

并发:看上去一起执行,同时在发生

 

 

并行:真正的一起执行,同时在进行

 进程的概念:

  计算机程序是存储在磁盘上的可执行二进制(或者其他类型)文件

    只有当他们被加载到内存中,并被操作系统调用的时候,他们才会拥有自己的生命周期

  进程则表示一个正在执行的程序

    每个程序都拥有自己的地址空间,内存,数据栈以及其他用于跟踪执行的辅助资料

  操作系统负责其上的所有进程的执行

操作系统会为这些进程合理的分配执行时间

线程的概念:

 线程被称作轻量级进程

 与进程类似,不过他们是在不同的进程下执行的。并且他们会共享相同的上下文

当其他线程执行时,他可以被抢占(中断),和临时挂起(睡眠)---------让步

    线程的轮询调度机制类似于进程的轮询调度。只不过这个调度不是由操作系统来负责的,而是由python解释器来负责

 

 

CPU,进程,线程之间的调度关系

CPU——>进程——>线程

 

 

利用进程和线程,实现并发服务器

线程:(GIL全局解释器锁:遇到阻塞就切换)

 

进程:

补充:

等待结束:.join()  

     我们调用的子进程或者子线程,阻塞等待,直到进程或者线程结束

 

查看当前进程和当前线程   multiprocessing.current_process() / multiprocessing.current_thread()

    还是之前的代码

 

终止进程  进程/线程.terminate()

强制终止子进程/线程,不管进程/线程有没有执行完毕,直接结束

 

进程/线程的标志    进程print(multiprocessing.process().pid)

线程print(threading..current_thread().ident)

 

查看进程/线程名      实例化的时候输入:m = multiprocessing.Process(target=func, name = 'xxxx')

或者实例化的声明  m.name = 'xxxx'

 

查看进程/线程是否还在运行    print(m.is_alive(),m)

 

守护进程/线程    daemon = True    p = Process(target=func, daemon=True)

把这个进程设置为守护进程随主线程关闭而关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值