网络编程(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")
原文地址:https://www.cnblogs.com/wanchenxi/p/7747286.html