03-03 11—15

______egon新书python全套来袭请看:https://egonlin.com/book.html

11.什么是防火墙以及作用?

# 答案:
'''
		在互联网上防火墙是一种非常有效的网络安全模型,通过它可以隔离风险区域(即Internet或有一定风险的网络)与安全区域(局域网)的连接,同时不会妨碍人们对风险区域的访问。所以它一般连接在核心交换机与外网之间。

		1.过滤进出网络的数据 
		2.2.管理进出访问网络的行为 
		3.3.封堵某些禁止业务 
		4.4.记录通过防火墙信息内容和活动 
		5.5.对网络攻击检测和告警


'''

12.select、poll、epoll模型的区别?

# 答案:
'''
		I/O多路复用的本质就是用select/poll/epoll,去监听多个socket对象,如果其中的socket对象有变化,只要有变化,用户进程就知道了。

		select是不断轮询去监听的socket,socket个数有限制,一般为1024个;

		poll还是采用轮询方式监听,只不过没有个数限制;

		epoll并不是采用轮询方式去监听了,而是当socket有变化时通过回调的方式主动告知用户进程。

 
'''

13.简述进程、线程、协程的区别以及应用场景?

# 答案:
'''
1.进程是操作系统资源分配的最小单位,拥有独立的资源和地址空间
2.线程是CPU调度的单位
3.统一进程中的线程是资源共享的。
4.协程是用户级别的,程序之间的切换由用户自行处理,节省了CPU的调度时间。
'''

14.什么是GIL锁?

# 答案:
'''
		全局解释锁,每次只能一个线程获得cpu的使用权:为了线程安全,也就是为了解决多线程之间的数据完整性和状态同步而加的锁,因为我们知道线程之间的数据是共享的。
'''

15.Python中如何使用线程池和进程池?

# 答案:
# 线程池
import threadpool, time
 
with open(r'../uoko_house_id.txt', 'r', encoding='utf-8') as f:    # with open语句表示通用的打开文件的方式,此处用来获取需要爬取参数的列表
    roomIdLi = f.readlines()
    roomIdList =[x.replace('\n','').replace(' ','') for x in roomIdLi]
    print(roomIdList)
    li = [[i, item] for i, item in enumerate(roomIdList)]    # enumerate()将列表中元素和其下标重新组合输出
 
def run(roomId):
    """对传入参数进行处理"""
    print('传入参数为:', roomId)
    time.sleep(1)
  
def main():
    roomList = li       # 房间信息
    start_time = time.time()
    print('启动时间为:', start_time)
    pool = threadpool.ThreadPool(10)
    requests = threadpool.makeRequests(run, roomList)
    [pool.putRequest(req) for req in requests]
    pool.wait()
    print("共用时:", time.time()-start_time)
 
if __name__ == '__main__':
    main()
    
    

# 进程池
from multiprocessing.pool import Pool
from time import sleep
 
def fun(a):
    sleep(5)
    print(a)
 
if __name__ == '__main__':
    p = Pool()             
    for i in range(10):
        p.apply_async(fun, args= (i, ))
    p.close()
    p.join()       
    print("end")

posted @ 2019-10-22 21:16  小猿取经-林海峰老师  阅读(1112)  评论(0编辑  收藏  举报