• 网络编程(day4)


    并行

    http://www.cnblogs.com/yuanchenqi/articles/6806707.html

    http://www.cnblogs.com/yuanchenqi/articles/6755717.html

    并发编程
    
    
    1 为什么要有操作系统?
    
    操作系统,位于底层硬件与应用软件之间的一层
    工作方式:向下管理硬件 向上提供接口
    
    
    
    操作系统进程切换:
    
    1 出现IO操作
    
    2 固定时间
    
    
    进程:  资源管理单位 (容器)
    
    线程:  最小执行单位
    
    Python的多线程: 由于GIL,导致同一时刻,同一进程只能有一个线程被运行。
    
    
    t.join():线程对象t未执行完,会阻塞你的主线程。
    
    
    GIL(全局解释器锁):
    
    加在cpython解释器上;
    
    计算密集型: 一直在使用CPU
    
    IO:存在大量IO操作 
    
    
    总结: 
    
    对于计算密集型任务:Python的多线程并没有用
    对于IO密集型任务:Python的多线程是有意义的(爬虫)
    
    python使用多核:开进程,弊端:开销大而且切换复杂
    python不能使用多核,因为gil就是加在进程上的大锁
    着重点:协程
    +多进程 方向:IO多路复用 终极思路:换C模块实现多线程
    #  调用方式1
    
    # import threading
    # import time
    #
    # def tingge():
    #     print("听歌")
    #     time.sleep(3)
    #     print("听歌结束")
    #
    # def xieboke():
    #     print("写博客")
    #     time.sleep(5)
    #     print("写博客结束")
    #
    #     print(time.time()-s)
    #
    # s=time.time()
    #
    # t1=threading.Thread(target=tingge)
    # t2=threading.Thread(target=xieboke)
    #
    # t1.start()
    # t2.start()
    
    #  调用方式2
    # import threading
    # import time
    #
    # class MyThread(threading.Thread):
    #
    #     def __init__(self,num):
    #         threading.Thread.__init__(self)
    #         self.num=num
    #
    #     def run(self):
    #         print("running on number:%s" %self.num)
    #         time.sleep(3)
    
    # t1=MyThread(56)
    # t2=MyThread(78)
    #
    # t1.start()
    # t2.start()
    #
    # print("ending")
  • 相关阅读:
    Oracle学习
    挑战练习11.5 恢复CrimeFragment的边距
    844. Backspace String Compare
    496. Next Greater Element I
    682. Baseball Game
    707. Design Linked List
    挑战练习10.6 实现高效的RecyclerView刷新
    挑战练习9.5 日期格式化
    挑战练习8.8 RecyclerView ViewType
    挑战练习6.5 限制作弊次数
  • 原文地址:https://www.cnblogs.com/wanchenxi/p/7747286.html
Copyright © 2020-2023  润新知