python爬蟲系列(一)

2021-08-22 14:57:02 字數 1440 閱讀 6433

整理這番外篇的原因是希望能夠讓爬蟲的朋友更加理解這塊內容,因為爬蟲爬取資料可能很簡單,但是如何高效持久的爬,利用程序,執行緒,以及非同步io,其實很多人和我一樣,故整理此系列番外篇

程式並不能單獨和執行只有將程式裝載到記憶體中,系統為他分配資源才能執行,而這種執行的程式就稱之為程序。程式和程序的區別在於:程式是指令的集合,它是程序的靜態描述文字;程序是程式的一次執行活動,屬於動態概念。

例如我們寫乙個hello程式,當這個程式再作業系統上執行的時候,作業系統會給我們一種假象,好像系統上就這乙個程式在執行。程式看上去是獨佔的使用處理器,主存,和io裝置,處理器看上去就像在不間斷的執行程式中的指令,即該程式的**和資料是作業系統記憶體中唯一的物件。這其實就是通過程序實現的。

程序的概念

程序是作業系統對乙個正在執行的程式的一種抽象。即程序是處理器,主存,io裝置的抽象

作業系統可以同時執行多個程序,而每個程序都好像在獨佔的使用硬體

併發執行

併發執行:乙個程序的指令和另外乙個程序的指令是交錯執行的。

上下文切換

cpu看上去像是在併發的執行多個程序,這是通過處理器在程序之間切換來實現的,作業系統實現這種交錯執行的機制稱為上下文切換

作業系統保持跟蹤程序執行所需的所有狀態資訊。這種狀態,就是上下文。

在任何乙個時刻,作業系統都只能執行乙個程序**,當作業系統決定把控制權從當前程序轉移到某個新程序時,就會進行上下文切換,即儲存當前程序的上下文,恢復新程序的上下文,然後將控制權傳遞到新程序,新程序就會從它上次停止的地方開始。

我們還通過hello這個程式進行理解這個過程(環境為linux):

shell程序和hello程序。

開始,shell程序在執行,等待命令列的輸入

執行hello程式,shell通過系統呼叫來執行我們的請求,這個時候系統呼叫會講控制權傳遞給作業系統。作業系統儲存shell程序的上下文,建立乙個hello程序以及其上下文並將控制權給新的hello程序。

hello程序終止後,作業系統恢復shell程序的上下文,並將控制權傳回給shell程序

shell程序繼續等待下個命令的輸入

執行緒的概念

執行緒是作業系統能夠進行運算排程的最小單位,它被包含在程序中,是程序中的實際運作單位

乙個程序實際上可以由多個執行緒的執行單元組成。每個執行緒都執行在程序的上下文中,並共享同樣的**和全域性資料。

由於在實際的網路伺服器中對並行的需求,執行緒成為越來越重要的程式設計模型,因為多執行緒之間比多程序之間更容易共享資料,同時執行緒一般比程序更高效

併發指的是同時具有多個活動的系統

並行值得是用併發來使乙個系統執行的更快。並行可以在作業系統的多個抽象層次進行運用

Python 爬蟲系列(一)

1 為了省去時間投入學習,推薦直接安裝整合環境 anaconda 2 ide pycharm pydev 3 工具 jupyter notebook 安裝完anaconda會有的 1 瘋狂的python 快速入門精講 python2.x,可體驗到與python3.x的差異 看完這些課程,自己對pyt...

Python爬蟲系列

部落格 python,爬蟲 由於近來學 lan 業 ai 繁 fa 忙 zuo 快乙個月沒有更新部落格了。這周完成了兩門課的結課考試,現下時間開始變得充裕。準備梳理一下前段時間學習的關於python爬蟲的內容,權當複習鞏固知識。而初次學習時遇到的疑難雜症,那時候的應對策略是抓大放下,在這梳理過程會下...

Python爬蟲簡述系列之一

根據使用場景,網路爬蟲可分為通用爬蟲和聚焦爬蟲兩種.搜尋引擎網路爬蟲的基本工作流程如下 1,首先選取一部分的種子url,將這些url放入待抓取url佇列 3,分析已抓取url佇列中的url,分析其中的其他url,並且將url放入待抓取url佇列,從而進入下乙個迴圈 在其他 上設定新 外鏈 盡可能處於...