python面试知识点二

python知识点二、

进程、线程、协程

进程
进程是资源(cpu、内存、网络、io)分配的最小单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。进程拥有自己独立的内存空间,进程间数据不共享,开销大。
线程
线程是程序执行时的最小单位,它是进程的一个执行流。一个进程可由多个线程组成,线程间共享进程的所有资源,每个线程都有自己的堆栈和局部变量。为了保证数据安全,必须使用线程锁(GIL全局解释器锁和线程锁)
协程
1.协程又称微线程,本质上就是一个单线程。
2.协程能在单线程处理高并发,因为遇到IO自动切换
线程遇到I/O操作会等待、阻塞,协程遇到I/O会自动切换 (剩下的只有CPU操作)
线程的状态保存在CPU的寄存器和栈里而协程拥有自己 的空间,所以无需上下文切换的开销,所以快
3.为甚么协程能够遇到I/O自动切换
greenlet是C语言写的一个模块,遇到IO手动切换
协程有一个gevent模块(封装了greenlet模块),遇到I/O自动切换
4.协程拥有自己的空间,所以无需上下文切换的开销

基于python中staticmethod和classmethod的区别

class A(object):
  def foo(self,x):
    print "executing foo(%s,%s)"%(self,x)
 
  @classmethod
  def class_foo(cls,x):
    print "executing class_foo(%s,%s)"%(cls,x)
 
  @staticmethod
  def static_foo(x):
    print "e
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值