并行
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")