#同步阻塞:调用函数必须等待结果,并且cpu不工作,比如:input sleep recv accept connect (应该是针对当前进程)
#同步非阻塞:调用函数必须等待结果,但是cpu工作,比如:strip eval sum max min sorted  strip在处理字符串 cpu工作
#异步阻塞:电泳函数不需要立即获取结果,而是继续做其他的事,在获取结果的时候不知道先获取谁的,但总之需要等待
#异步非阻塞:调用函数不需要立即获取结果,也不需要等待 start()  terminate()


#总结
#进程:数据隔离,资源分配的最小单位,可以利用多核,操作系统调度
    #multiprocessing 如何开启进程 start join
    #进程数据不安全问题 Lock
    #守护进程 daemon属性
    #进程之间通信IPC
    #队列,管道 ,第三方工具
    #进程之间可以通过Manager类实现数据共享
    #生产者消费者模型
    #一般开启的进程数不会超过cpu个数的两倍



#线程:能被CPU调度的最小单位 ,学了半天 关于并发需求进程还没线程重要?
    #一个进程里可能有多个线程,而且可以同时被多核处理器调度执行
    #不是资源分配的最小单位,是操作系统调度的最小单位
    #也存在数据不安全
    #但是可以数据共享
    #进程的开启和关闭 时间开销大 线程的小
#【重要】在CPython中的多线程
    #gc 垃圾回收机制 线程
        #引用计数+分代回收
    #全局解释器锁:为了完成gc的回收机制,对不同线程的引用计数的变化记录的更加精准
    #GIL(global interpreter Lock)
        #导致同一个进程中的多个线程在同一时刻只能有一个线程被cpu执行
import time
#装饰器计算各个功能时间
def use_time(f): #闭包
    def inner(*args,**kwargs):
        time1 = time.time()
        f(*args,**kwargs)
        time2 = time.time()
        print(f'{f}耗时{time2-time1}')
    return inner

@use_time
def calc():#计算加法
    for i in range(100000):
        i+=1
@use_time
def open_file():#打开文件,写文字进去
    with open('aa.info','w') as f1:
        f1.write('a')
if __name__ == '__main__':
    calc() #耗时0.038024187088012695
    open_file() #耗时0.006002902984619141
posted on 2020-08-14 18:05  94小渣渣  阅读(73)  评论(0)    收藏  举报