欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

線程和進程的區(qū)別及Python代碼實例

 更新時間:2015年02月04日 09:17:56   投稿:junjie  
這篇文章主要介紹了線程和進程的區(qū)別及Python代碼實例,本文給出了一個python的腳本讓一個進程中運行兩個線程,需要的朋友可以參考下

在程序猿的世界中,線程和進程是一個很重要的概念,很多人經(jīng)常弄不清線程和進程到底是什么,有什么區(qū)別,本文試圖來解釋一下線程和進程。首先來看一下概念:

進程(英語:process),是計算機中已運行程序的實體。進程為曾經(jīng)是分時系統(tǒng)的基本運作單位。在面向進程設計的系統(tǒng)(如早期的UNIX,Linux 2.4及更早的版本)中,進程是程序的基本執(zhí)行實體;在面向線程設計的系統(tǒng)(如當代多數(shù)操作系統(tǒng)、Linux 2.6及更新的版本)中,進程本身不是基本運行單位,而是線程的容器。程序本身只是指令、數(shù)據(jù)及其組織形式的描述,進程才是程序(那些指令和數(shù)據(jù))的真正運行實例。–維基百科

線程(英語:thread)是操作系統(tǒng)能夠進行運算調(diào)度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務。–維基百科

概念太嚇人了,先來看一下進程,這個相對于線程來說還是稍微好理解一點的。進程,是程序運行的實體,這句話的意思是,程序是存放在硬盤中的,當這個程序運行時,就會產(chǎn)生若干個進程,并且這個進程是可見的,在windows8的任務管理器中,我們看到有下列進程:

那么什么是線程呢?如果你編寫過程序,特別是類似windows的批處理這樣的邏輯控制語句少的語言,就能明顯感覺到,當運行一個程序是,實際上整個運行的過程是從頭部一直運行到尾部。例如有這樣一段批處理的代碼,提示用戶輸入姓名,然后根據(jù)姓名輸出問候:

@echo off
set /p name=請輸入您的姓名: 
cls
echo 你好,%name
pause

這段小程序就是自上而下執(zhí)行,執(zhí)行完畢則退出。不管是批處理,像PHP,Node.JS等都是這樣自上而下執(zhí)行的。實際上這就是一個線程,可以這樣去理解:線程是一個任務流,它被包含在進程之中。有個例子:

5月1號這一天,麥當勞生意比較火爆,人很多,前臺有6個窗口,有4個窗口在工作,隨著要吃飯的人變多,麥當勞不得不開放了剩余的兩個窗口。在這里,每一個窗口就是一個進程,處理賣垃圾食品這樣一個任務,讓系統(tǒng)需要處理更多請求時候,開放窗口就是增加進程來處理需求。由于是假期,發(fā)現(xiàn)即使是6個窗口全開了,排隊的客戶還是很多,那么,這里是不是沒有其它的辦法了呢?效率都是逼出來的,經(jīng)理發(fā)現(xiàn),客戶買完東西,在旁邊等,當客戶的漢堡(或者其它垃圾食品)準備好了,是由單獨的一個人(小明)把食品遞給客戶,由于這個人需要把準備好的食物分別送給6個不同窗口的客戶,所以效率很低。這時候經(jīng)理發(fā)話了,食品準備好了,直接由窗口的售賣人員把食品給正在等在的客戶,這樣比較節(jié)省時間。在這里,前臺售賣人員的工作就有原來的一項專門售賣商品的工作,變成了兩項,就是兩個進程。

進上總結,一個進程中至少有一個線程,在實際的工作中,不是所有的程序都支持多線程,也有一些程序對多進程也支持得不夠好,像PHP,Node.js等都是單進程,單線程的。

下面這個python的腳本讓一個進程中運行兩個線程:

import time 
import thread 
def Ordering(interval): 
  cnt = 0 
  while cnt<100: 
    print '好了,你訂餐成功,訂餐號碼是:%d號 訂餐時間是:%s 請在旁邊耐心等待\n\n'%(cnt, time.ctime()) 
    time.sleep(interval) 
    cnt+=1 
  thread.exit_thread() 
def Notice(interval): 
  cnt = 0 
  while cnt<100: 
    print '誰的號碼是%d,您的餐好了,過來取一下\n'%(cnt) 
    time.sleep(interval) 
    cnt+=1 
  thread.exit_thread()  
  
def work(): #Use thread.start_new_thread() to create 2 new threads 
  thread.start_new_thread(Ordering,(1,)) 
  thread.start_new_thread(Notice,(5,)) 
  
if __name__=='__main__': 
  work()

相關文章

  • Python list列表刪除元素的4種方法

    Python list列表刪除元素的4種方法

    本文主要介紹了Python list列表刪除元素的4種方法,主要包括del、pop、remove、clear,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • django生產(chǎn)環(huán)境搭建(uWSGI+django+nginx+python+MySQL)

    django生產(chǎn)環(huán)境搭建(uWSGI+django+nginx+python+MySQL)

    本文主要介紹了django生產(chǎn)環(huán)境搭建,主要包括uWSGI+django+nginx+python+MySQL,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python爬蟲入門教程01之爬取豆瓣Top電影

    Python爬蟲入門教程01之爬取豆瓣Top電影

    這篇文章主要介紹了Python爬蟲入門教程01:豆瓣Top電影爬取的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • python創(chuàng)建線程示例

    python創(chuàng)建線程示例

    這篇文章主要介紹了python創(chuàng)建線程示例,需要的朋友可以參考下
    2014-05-05
  • Python實現(xiàn)的Google IP 可用性檢測腳本

    Python實現(xiàn)的Google IP 可用性檢測腳本

    這篇文章主要介紹了Python實現(xiàn)的Google IP 可用性檢測腳本,本文腳本需要Python 3.4+環(huán)境,需要的朋友可以參考下
    2015-04-04
  • python爬取網(wǎng)頁轉換為PDF文件

    python爬取網(wǎng)頁轉換為PDF文件

    這篇文章主要為大家詳細介紹了python爬取網(wǎng)頁轉換為PDF文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 用Python設計一個經(jīng)典小游戲

    用Python設計一個經(jīng)典小游戲

    本篇文章主要介紹如何用Python設計一個經(jīng)典小游戲:猜大小。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • Python+turtle繪制七夕表白玫瑰花

    Python+turtle繪制七夕表白玫瑰花

    七夕節(jié),又稱“七巧節(jié)”“女兒節(jié)”“乞巧節(jié)”等,是中國民間的傳統(tǒng)節(jié)日。一年一度的七夕又快到了,用Python畫一朵玫瑰花送給你的那個TA吧
    2022-08-08
  • 淺談python數(shù)據(jù)類型及類型轉換

    淺談python數(shù)據(jù)類型及類型轉換

    這篇文章主要介紹了淺談python數(shù)據(jù)類型及類型轉換,介紹了python中的數(shù)據(jù)類型,以及數(shù)據(jù)的不可變性,還有字符串,列表等相關內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Pandas時間序列基礎詳解(轉換,索引,切片)

    Pandas時間序列基礎詳解(轉換,索引,切片)

    今天小編就為大家分享一篇Pandas時間序列基礎詳解(轉換,索引,切片),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論