03-03 11—15


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM