python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...
整理這番外篇的原因是希望能夠讓爬蟲的朋友更加理解這塊內容,因為爬蟲爬取數據可能很簡單,但是如何高效持久的爬,利用進程,線程,以及異步IO,其實很多人和我一樣,故整理此系列番外篇
一、進程
程序并不能單獨和運行只有將程序裝載到內存中,系統為他分配資源才能運行,而這種執行的程序就稱之為進程。程序和進程的區別在于:程序是指令的集合,它是進程的靜態描述文本;進程是程序的一次執行活動,屬于動態概念。
例如我們寫一個hello程序,當這個程序再操作系統上運行的時候,操作系統會給我們一種假象,好像系統上就這一個程序在運行。程序看上去是獨占的使用處理器,主存,和IO設備,處理器看上去就像在不間斷的執行程序中的指令,即該程序的代碼和數據是操作系統內存中唯一的對象。這其實就是通過進程實現的。
進程的概念
進程是操作系統對一個正在運行的程序的一種抽象。即進程是處理器,主存,IO設備的抽象
操作系統可以同時運行多個進程,而每個進程都好像在獨占的使用硬件
并發運行
并發運行:一個進程的指令和另外一個進程的指令是交錯執行的。
上下文切換
CPU看上去像是在并發的執行多個進程,這是通過處理器在進程之間切換來實現的,操作系統實現這種交錯執行的機制稱為上下文切換
操作系統保持跟蹤進程運行所需的所有狀態信息。這種狀態,就是上下文。
在任何一個時刻,操作系統都只能執行一個進程代碼,當操作系統決定把控制權從當前進程轉移到某個新進程時,就會進行上下文切換,即保存當前進程的上下文,恢復新進程的上下文,然后將控制權傳遞到新進程,新進程就會從它上次停止的地方開始。
我們還通過hello這個程序進行理解這個過程(環境為linux):
shell進程和hello進程。
開始,shell進程在運行,等待命令行的輸入
執行hello程序,shell通過系統調用來執行我們的請求,這個時候系統調用會講控制權傳遞給操作系統。操作系統保存shell進程的上下文,創建一個hello進程以及其上下文并將控制權給新的hello進程。
hello進程終止后,操作系統恢復shell進程的上下文,并將控制權傳回給shell進程
shell進程繼續等待下個命令的輸入
二、線程
線程的概念
線程是操作系統能夠進行運算調度的最小單位,它被包含在進程中,是進程中的實際運作單位
一個進程實際上可以由多個線程的執行單元組成。每個線程都運行在進程的上下文中,并共享同樣的代碼和全局數據。
由于在實際的網絡服務器中對并行的需求,線程成為越來越重要的編程模型,因為多線程之間比多進程之間更容易共享數據,同時線程一般比進程更高效
三、并發和并行的概念
并發指的是同時具有多個活動的系統
并行值得是用并發來使一個系統運行的更快。并行可以在操作系統的多個抽象層次進行運用
所有的努力都值得期許,每一份夢想都應該灌溉!
總結
以上是生活随笔為你收集整理的python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux mysql 安装innodb
- 下一篇: python的内存回收机制_关于pyth