Python並發編程很簡單,一文幫你搞清如何創建線程類

2020-12-19 品位集結號

對於Python的並發編程相關的東東,相信通過上次咱們的探討,大家已經比較清楚了,對於Python創建線程的方式主要有兩種,這個上次咱們也已經說過了哦,第一種是使用threading模塊的Thread類的構造器來創建線程,這種方式上次咱們已經詳細討論過了哦,這次呢,咱們就重點和大家來聊聊第二種方式吧,它就是繼承threading模塊的Thread類創建線程類哦!

好啦,廢話少說,咱們就開始吧!

首先說一下通過繼承threading模塊的Thread類來創建線程類的步驟哦,它主要有3步哦:

第一步:首先定義Thread類的子類哦,然後再重寫這個子類的run()方法哦,其實呢,這裡的run()方法就表示線程需要完成的任務哦,所以哈,你當然可以把這個run()方法稱作線程的執行體哦。

第二步:創建上面咱們所定義的Thread子類的實例哦,也就是所謂的創建線程對象哦。

第三步:就是調用線程對象的start()方法來運行線程啦!

好啦,為了能夠對上面的三個步驟有深入的印象,咱們就老習慣,舉個「慄子」哦:

上面就是咱們使用繼承Thread類來創建線程類的方式哦,可以看到,在第5行所自定義的DemoThread類繼承了threading模塊中的Thread類哦,然後在第13行到第18行重寫並實現了run()方法哦,接下來在所定義的主程序中循環10次,並在循環變量為5時,咱們創建並啟動運行了兩個線程哦!

好啦,下面咱們就運行一下看看結果如何吧,首先調用Python解釋器運行上面程序哦:

運行上面指令就會輸出一下結果哦:

可以看到在第6次輸出後,就會有主線程、咱們所定義的Thread-1線程和Thread-2線程在交叉運行哦,這就是說明進行Python多線程編程成功哦,這三個線程的交叉運行就是咱們電腦的CPU快速切換實現的,由於CPU的主頻很高,所以咱們感覺Python就是在進行並發編程哦!

好啦,上面就是咱們所介紹的通過繼承threading模塊的Thread類來創建線程類的全部內容哦,希望大家能夠學會這種方式哦,今天咱們就聊到這吧,下次再見哦!

敬請關注「品位集結號」,為您帶來意外的小收穫!

Python並發編程很簡單,一文搞清如何使用構造器創建線程

進程和線程,你真的了解嗎?一文幫你搞清楚,拿走不謝

統計圖形自己就可搞定,教你如何用Python繪製經典餅圖

相關焦點

  • 多任務並發編程需要學習的內容有哪些?
    Python多任務並發編程需要學習的內容有哪些?並發編程的目的是為了讓程序運行得更快,分工,高效地拆解任務並分配給線程;同步,線程之間如何協作; 互斥,保證同一時刻只允許一個線程訪問共享資源。需要學習多線程、多進程的創建,互斥鎖,死鎖,集全局變量等問題的解決方案。
  • Alibaba架構師從零開始,一步一步帶你進入並發編程的世界
    筆記的目的就是幫讀者快速學習並解決問題。這本書的所有知識均來自於作者多年的項目實踐,傾注了作者多年的心血。講解的深入淺出,讓你掌握起來毫不費力。如果你想成為一名架構師, 如果你想成為一名資深的技術大牛,強烈推薦你讀一讀, 你值得擁有!
  • Python 3.8異步並發編程
    有效的提高程序執行效率的兩種方法是異步和並發,Golang,node.js之所以可以有很高執行效率主要是他們的協程和異步並發機制。實際上異步和並發是每一種現代語言都在追求的特性,當然Python也不例外,今天我們就講講Python 3中的異步並發編程。
  • JAVA並發編程:並發問題的根源及主要解決方法
    計算機的發展有一部分就是如何重複利用資源,解決硬體資源之間效率的不平衡,而後就有了多進程,多線程的發展。而這種破壞程序有序性的行為,在有些時候會出現一些非常微妙且難以察覺的並發編程bug。舉個簡單的例子,我們常見的單例模式是這樣的:即通過兩段判斷加鎖來保證單例的成功生成,但在極小的概率下,可能會出現異常情況。
  • Qt框架QThread類線程基礎知識
    傳遞指針是可能的,但必須嚴格協調哪個線程接觸哪個對象。必須防止同時對一個對象執行操作。有幾種方法可以實現這一目標,其中一些方法如下所述。那麼,可以安全地做什麼呢?在線程中創建的所有對象都可以在該線程內安全地使用,前提是其他線程沒有對它們的引用,並且對象沒有與其他線程的隱式耦合。當數據在實例之間共享(如靜態成員、單例或全局數據)時,可能會發生這種隱式耦合。
  • 原創】Java並發編程系列01|開篇獲獎感言
    這個不寫並發程序的原則行得通的背景是那個時候基本都是單核處理器,系統並發量很低,藉助資料庫和類似Tomcat這種中間件就可以解決並發問題。如今硬體的驅動和網際網路行業的飛速發展,64核的處理器已經是很常見了,大型互聯廠商的系統並發量輕鬆過百萬,傳統的中間件和資料庫肯定是不能幫我們遮風避雨了,我們只能通過並發編程來解決這些問題。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    6套課程) 資料庫操作(1套課程) python高級編程(6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。
  • 「原創」Java並發編程系列02|並發編程三大核心問題
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫寫在前面編寫並發程序是比較困難的,因為並發程序極易出現Bug,這些Bug有都是比較詭異的,很多都是沒辦法追蹤,而且難以復現。
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • Github上星標85.7k的並發編程神筆記也太香了吧!
    並發編程並發編程可選擇的方式有多進程、多線程和多協程。對於Java來說,它既不像C++那樣,在運行中調用Linux的系統API去"fork" 出多個進程:也不像Go那樣,在語言層面原生提供多協程。在Java中, 並發就是多線程模式。對於人腦的認知來說,「代碼一行行串行」當然最容易理解。但在多線程下,多個線程的代碼交叉並行,要訪問互斥資源,要互相通信。作為開發者,需要仔細設計線程之間的互斥與同步,稍不留心,就會寫出非線程安全的代碼。正因此,多線程編程一直是一個被廣泛而深入討論的領域。
  • Thread類的常用方法之設置線程名稱
    Java之Thread類的常用方法之獲取線程名稱,這次小編要介紹的是在Thread類的常用方法中,設置線程名稱。如何設置線程名稱呢?有兩種方法。使用Thread類中的方法setName(名字)。void setName(String name)改變線程名稱,使之與參數name相同。
  • 「原創」Java並發編程系列09|基礎乾貨
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文為何適原創並發編程系列第9篇。現在,我們進入正題:介紹並發編程的基礎性概念。
  • Python學習步驟
    Python10大特點:易於學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。易於閱讀:Python代碼定義的更清晰。可擴展:如果你需要一段運行很快的關鍵代碼,或者是想要編寫一些不願開放的算法,你可以使用C或C++完成那部分程序,然後從你的Python程序中調用。資料庫:Python提供所有主要的商業資料庫的接口。GUI編程:Python支持GUI可以創建和移植到許多系統調用。
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 將這些Handler傳送給urllib2的build_opener方法創建一個opener對象,再傳給urllib2的install_opener方法,urllib2這個模塊就具備了進行特殊情景處理的能力。
  • 付費的知識星球要過期了,python 教你怎麼辦
    當然,本篇文章需要你有一點 python 基礎,如果沒有的話,建議你先收藏,去找一些教程學習一下這門工具人語言。好了,廢話不多說,馬上開始。首先,導入所需要的包:因為非關係型資料庫比較簡單,我們用到的數據結構也不複雜,開發起來比較快。
  • 「原創」Java並發編程系列33|深入理解線程池(上)
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫並發編程必不可少的線程池,接下來分兩篇文章介紹線程池,本文是第一篇。介紹1.1 使用場景並發編程可以高效利用CPU資源,提升任務執行效率,但是多線程及線程間的切換也伴隨著資源的消耗。當遇到單個任務處理時間比較短,但需要處理的任務數量很大時,線程會頻繁的創建銷毀,大量的時間和資源都會浪費在線程的創建和銷毀上,效率很低。
  • 阿里技術大牛花一年時間整理1639頁並發編程系統學習路線文檔
    並發編程編寫正確的程序並不容易,而編寫正確的並發程序就更難了。與順序執行的程序相比,.並發程序中顯然更容易出現錯誤。那麼,我們為什麼會對並發如此煩惱呢?線程是Java .語言不可避免的特性,它們把複雜、異步的代碼轉化為更簡單、更直觀的代碼,從而簡化複雜系統的開發。進一步而言,線程是控制和利用多處理器系統計算能力的最簡單方式。同時,伴隨著處理器數量的增加,有效地採用並發會變得越來越重要。如何學習並發編程?
  • Python線程的生命周期你知道多少,一文幫你全部搞清楚
    今天和大家聊聊有關Python線程的相關知識,大家都知道線程是有生命周期的,因為當線程被創建運行之後,它並不是一直處於執行狀態的,每個線程都會有一個由出生到死亡的過程,而對於Python而言,它的生命周期共有5個狀態,這五個狀態分別是新建、就緒、運行、阻塞和死亡
  • 開始你的編程之旅吧!從Python入門講起……
    「學習一門程式語言能讓我學習一些先進的技術,如人工智慧和機器學習。」大多數答案都與上述相似,學習一門程式語言的主要原因是為了找一份工作或者將其運用到先進技術中去。這個世界一直用錯誤的方式教育你,學什麼就會獲得什麼。你所閱讀、觀看的任何有關程式語言的教程都會從現實生活中的語言開始。
  • Python基礎教程——多協程並發——gevent
    一看到多協程並發,我相信很多同學的第一個念頭就是:頭大。這玩意兒太難了,太複雜了,很難搞。然而,我要說的是:其實不然,它很容易使用,也很容易掌握。今天,我就來個複雜一點的需求,然後以很簡單的方式解決這個問題,使用requests和gevent這兩個神器和大家一起領略一下它的美妙。