網絡編程2

關於asyncio的使用html

做用:它是處理併發的重要利器python

 

# import asyncio
#
# async def hello():
#     print("Hello world!")
#     await asyncio.sleep(1)  # IO
#     print("Hello again!")
#
# # 獲取EventLoop:
# loop = asyncio.get_event_loop()
# # 執行coroutine
# loop.run_until_complete(asyncio.wait([hello(),hello(),hello()]))

import asyncio

async def get_url():
    reader,writer = await asyncio.open_connection('www.baidu.com',80)
    writer.write(b'GET / HTTP/1.1\r\nHOST:www.baidu.com\r\nConnection:close\r\n\r\n')
    all_lines = []
    async for line in reader:
        data = line.decode()
        all_lines.append(data)
    html = '\n'.join(all_lines)
    return html

# async def main():
#     tasks = []
#     for url in range(20):
#         tasks.append(asyncio.ensure_future(get_url()))
#     asyncio.wait(tasks)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    tasks = []
    for url in range(20):
        tasks.append(asyncio.ensure_future(get_url()))
    loop.run_until_complete(asyncio.wait(tasks))
    for i in tasks:
        print(i.result())

    # loop.run_until_complete(main())  # 處理一個任務
    # loop.run_until_complete(asyncio.wait([main()]))  # 處理多個任務
    #
    # task = loop.create_task(main())  # 使用create_task獲取返回值
    # loop.run_until_complete(task)
    # loop.run_until_complete(asyncio.wait([task]))

 

 

 8.什麼是socket,簡述基於tcp協議的套接字通訊流程程序員

socket(套接字)
#實現應用層網絡通訊1的一組接口
#幫助咱們組織了網絡通訊須要的其餘四層各類協議數據 排列順序 長度限制
#基於文件家族完成IPC通訊

 

10.io多路複用和做用web

#操做系統機制
#代理監聽全部的網絡對象是否發生了讀寫操做
#可以幫助程序員在寫程序的時候解決基於tcp協議的socket server的連接佔用問題
#如今python的異步框架幾乎都是io多路複用實現的
#asyncio  sanic tornado

 

13.簡述 進程,線程 協程的去區別 和應用場景redis

進程 高計算
線程 高io
協程 高網絡操做
下降程序的io操做
 #全部的爬蟲\日誌分析\web框架

 

15.如何使用線程池,進程池服務器

#concurrent.futures
    # ThreadPoolExcutor
    # ProcessPoolExcutor
# submit提交任務
# 添加回調函數  add_done_callback
# 獲取返回值 result

20.路由器和交換機的區別網絡

#路由器 局域網與局域網之間的通訊
#交換機 局域網內部負責通訊

 

 

31.業務服務器192.168.1.2 訪問 192.168.1.3數據接口, 沒法返回正常數據 ,排查思路併發

#同網段 ping 檢測ip 確認機器活着
#telnet 檢測端口
#telnet 192.168.12.3 80

 

36.簡述多進程開發過程當中join和 deamon 的區別app

# import time
# from multiprocessing import Process
# def son():
#     while True:
#         print('in son')
#         time.sleep(1)
#
# def son2():
#     print('start son2')
#     time.sleep(10)
#     print('end son2')
#
# if __name__ == '__main__':
#     p = Process(target=son)
#     p.daemon = True  # 守護進程 會等待主進程的代碼執行結束才結束
#     p.start()
#     Process(target=son2).start()
#     time.sleep(3)
#     print('hahahah')

 

進程之間如何通訊 (ipc)框架

 

#基於網絡隊列/管道/消息隊列memcache/rabbitmq/redis
#
管道 :基於socket + pickle #原生的queue: 基於文件 (管道+ 鎖) #第三方工具 : 基於網絡/穩定性更強
相關文章
相關標籤/搜索