python核心編程之多線程教程-threading

2021-01-07 python大蛇

多線程-threading

python的thread模塊是比較底層的模塊,python的threading模塊是對thread做了一些包裝的,可以更加方便的被使用

1. 使用threading模塊

單線程執行

#coding=utf-8

import time

def saySorry():

print("親愛的,我錯了,我能吃飯了嗎?")

time.sleep(1)

if __name__ == "__main__":

for i in range(5):

saySorry()

運行結果:

多線程執行

#coding=utf-8

import threading

import time

def saySorry():

print("親愛的,我錯了,我能吃飯了嗎?")

time.sleep(1)

if __name__ == "__main__":

for i in range(5):

t = threading.Thread(target=saySorry)

t.start() #啟動線程,即讓線程開始執行

運行結果:

說明

可以明顯看出使用了多線程並發的操作,花費時間要短很多

創建好的線程,需要調用start()方法來啟動

2. 主線程會等待所有的子線程結束後才結束

#coding=utf-8

import threading

from time import sleep,ctime

def sing():

for i in range(3):

print("正在唱歌...%d"%i)

sleep(1)

def dance():

for i in range(3):

print("正在跳舞...%d"%i)

sleep(1)

if __name__ == '__main__':

print('---開始---:%s'%ctime())

t1 = threading.Thread(target=sing)

t2 = threading.Thread(target=dance)

t1.start()

t2.start()

#sleep(5) # 屏蔽此行代碼,試試看,程序是否會立馬結束?

print('---結束---:%s'%ctime())

3. 查看線程數量

#coding=utf-8

import threading

from time import sleep,ctime

def sing():

for i in range(3):

print("正在唱歌...%d"%i)

sleep(1)

def dance():

for i in range(3):

print("正在跳舞...%d"%i)

sleep(1)

if __name__ == '__main__':

print('---開始---:%s'%ctime())

t1 = threading.Thread(target=sing)

t2 = threading.Thread(target=dance)

t1.start()

t2.start()

while True:

length = len(threading.enumerate())

print('當前運行的線程數為:%d'%length)

if length<=1:

break

sleep(0.5)

相關焦點

  • Python 實例:多線程
    ID:Computer-network不管哪種程式語言,多線程都是必不可少的。明明計算機有多餘的資源,卻花費了這麼多的時間。完全可以利用資源來換取時間,用多線程操作。在同一時間內運行多個線程(事實上線程並不是同時運行的,是基於時間片輪轉的方式執行。但對於操作者來說,跟同時運行並沒有什麼區別)。這樣雖然佔用了一定的資源,但大大地節省了時間。畢竟絕大多數的情況下都是希望時間優先的。在Python中,多線程的模塊是threading模塊。
  • python核心編程之多線程教程-非共享數據
    多線程-非共享數據對於全局變量,在多線程中要格外小心,否則容易造成數據錯亂的情況發生1. 非全局變量是否要加鎖呢?#coding=utf-8import threadingimport timeclass MyThread(threading.Thread):# 重寫 構造方法
  • Python多線程實戰
    點擊上方「Python人工智慧編程」,馬上關注目的:(1)了解python線程執行原理(2)掌握多線程編程與線程同步(3)了解線程池的使用1 線程基本概念1.1 線程是什麼?線程是指進程內的一個執行單元,也是進程內的可調度實體.
  • python教程之十二多線程
    調度和切換:線程上下文切換比進程上下文切換要快得多;python線程_thread模塊_thread模塊創建線程的方式是通過start_new_thread方法。說明:start_new_thread會啟動一個新線程,同時返回線程的句柄。有兩個必傳參數:函數和tuple類型的參數,可選參數:關鍵字參數,字典類型。
  • Python零基礎入門教程,如何使用多線程(上)?
    大綱了解多線程創建多線程有兩種方式守護線程多線程多個任務可以用多進程完成,也可以使用同一進程中的多個線程之間可以並發執行完成創建多線程# 方式一import threadingimport timedef run(name): print('{0} 開始跑步'.format(name))
  • Python並發編程之線程中的信息隔離
    在Python中,其提供了 threading.local這個類,可以很方便的控制變量的隔離,即使是同一個變量,在不同的線程中,其值也是不能共享的。用代碼來看下從輸出來看,我們可以知道, local實際是一個 字典型的對象,其內部可以以 key-value 的形式存入你要做信息隔離的變量。local實例可以是 全局唯一 的,只有一個。
  • [Python黑帽] 三.編程實現IP及埠掃描器、實現多線程C段掃描器
    文章目錄一.Python多線程二.編程實現ping掃描三.檢測IP存活地址四.編程實現埠掃描器五.多線程+Queue實現C段掃描一.Python多線程1.進程和線程進程:是程序的一次執行,每個進程都有自己的地址空間、內存、數據棧及其他記錄運行軌跡的輔助數據
  • 理解Python中多線程
    p=2604(點擊尾部閱讀原文前往)雖然Python中由於GIL的機制致使多線程不能利用機器多核的特性,但是多線程對於我們理解並發模型以及底層操作非常有用。線程的有兩種使用方法,一種是在函數使用,一種是放在類中使用。
  • Python 多線程入門,這一篇文章就夠了
    總的來說,如果你了解過其他語言實現多線程的方式,比如說 Java的話,那對於理解 Python 實現多線程是非常有幫助的。Python 實現多線程有兩種方式:使用 threading 模塊的 Thread 類的構造器創建線程繼承 threading 模塊的 Thread 類創造線程類看到這,你是不是發現這和 Java 實現多線程的方式很相類,不錯,確實就是這樣,所以再次印證了那句話,只要學好了一門語言,學習其他語言都會起到事半功倍的效果
  • Python並發編程很簡單,一文搞清如何使用構造器創建線程
    上次已經和大家探討了關於進程和線程的區別和聯繫相關的東東,今天呢,咱們再次回到Python哦,和大家一起聊聊如何進行Python並發編程哦,大家也可以理解為如何在Python中進行多線程編程哦!好啦,廢話少說,咱們就開始吧!
  • 這樣學 Python 多線程與進程(一)
    眾所周知,Python 中的多線程是一個假的多線程
  • 多線程中的信號量(Semaphore)Python每日3題(多線程專題)
    這裡是Python7編程挑戰-多線程專題
  • python3多線程實現一個語音報時,定時關機功能的應用
    話說遠了,我們還說python。python的語法類似與c++,但是比c++更靈活一些。如果您學習過c++,那肯定很快就入門python了。但是入門簡單不代表深入還簡單哦!任何一款程式語言,您學習後用到項目中,就會發現項目中遇到的問題,往往不是程式語言本身而是行業技術的限制或通病。例如您覺得python上手很簡單,但讓你用python去做一個人工智慧應用出來。您肯定犯難!為什麼呢?
  • 作為數據科學家你應該知道這些 python 多線程、進程知識
    並行處理可以用 python 以兩種不同的方式實現:多處理和線程。多處理與線程:理論基本上,多處理和線程是實現並行計算的兩種方法,分別使用進程和線程作為處理代理。為了理解它們的工作原理,我們必須搞清楚什麼是進程和線程。進程進程是正在執行的電腦程式的實例。
  • 求職大視野 | 編程零基礎應當如何開始學習 Python?
    零基礎學編程,用python入門是個不錯的選擇,雖然國內基本上還是以c語言作為入門開發語言,但在國外
  • Python入門基礎之socket多線程編程,TCP伺服器和客戶端通信
    在上一篇文章中,我介紹了一下python3 socket編程的基礎,包括TCP、UDP客戶端和伺服器的建立過程(連結在最下方)。不過那個只是單線程的,伺服器一次只能和一個客戶端會話,多個客戶端的話只能等待。我們平時的應用中,伺服器肯定是要並發的,所以,今天將介紹socket編程的多線程編程。
  • Python sleep()函數用法:線程睡眠
    sleep() 函數的語法規則如下所示:time.sleep(secs)其中,secs 參數用於指定暫停的秒數,仍以前面章節創建的 thread 線程為例,下面程序演示了 sleep() 函數的用法:import threadingimport timedef action(*add):
  • Python並發編程很簡單,一文幫你搞清如何創建線程類
    對於Python的並發編程相關的東東,相信通過上次咱們的探討,大家已經比較清楚了,對於Python創建線程的方式主要有兩種,這個上次咱們也已經說過了哦,第一種是使用threading模塊的Thread類的構造器來創建線程,這種方式上次咱們已經詳細討論過了哦,這次呢,咱們就重點和大家來聊聊第二種方式吧
  • Python中的Condition條件變量 - Python每日3題(多線程專題)
    這裡是Python7編程挑戰-多線程專題
  • 作為數據科學家你應該知道這些 python 多線程、進程知識
    例如,任何一個只處理數字的程序都可以使用多處理得到極大的加速;事實上,線程可能會減慢它的速度。一個有趣的實際例子是 Pytorch Dataloader,它使用多個子進程將數據加載到 GPU 中。python 中的並行化python 為同名的並行化方法提供了兩個庫——多處理和線程。