Python多線程入門學習

什麼是線程

什麼是線程?線程也叫輕量級進程,是操作系統能夠進行運算調度最小單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其他線程共享進程所擁有的全部資源。一個線程可以創建撤銷另一個線程,同一個進程中的多個線程可以併發執行,經常說的併發就是這個⬅️

爲什麼要使用多線程

線程在程序中是獨立的併發的執行流。與分隔的進程相比,進程中線程之間的隔離程度要小,它們共享內存文件句柄其他進程應有的狀態

粗一些(比如我)可以認爲:多線程可以實現幾乎同步的運行。

這就很棒了,我以前編寫的程序都是一步一步來的,但有了多線程就可以同步執行,嘿嘿爽😎

多線程編程的優點

  • 進程之間不能共享內存,但線程之間共享內存非常容易
  • 線程可以併發執行
  • 操作系統在創建進程時,需要爲該進程重新分配系統資源,但創建線程的代價則小得多。因此使用多線程來實現多任務併發執行比使用多進程的效率高
  • python語言內置了多線程功能支持,而不是單純地作爲底層操作系統的調度方式,從而簡化了python的多線程編程。

快速開始⏩

Python中的多線程模塊是threading,直接使用import語句引入即可,如果想簡化可以使用from threading import *免去輸入threading.,下面是一個簡單實例。

import threading
import time,os
def run(n):
    print('task',n)
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
    time.sleep(1)
    print('0s')
    time.sleep(1)

if __name__ == '__main__':
    t1 = threading.Thread(target=run,args=('t1',))
    t2 = threading.Thread(target=run,args=('t2',))
    t1.start()
    t2.start()

其中將兩條線程給了t1t2,參數target是目標函數,下一個參數args是參數,參數放在元組裏面,一個元素最後加一個逗號。

運行結果:

task t1
task t2
2s
2s
1s
1s
0s
0s

並行的執行函數,如果是以前的寫法,改寫如下

import threading
import time
def run(n):
    print('task', n)
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
    time.sleep(1)
    print('0s')
    time.sleep(1)
if __name__=='__main__':
    # t1=threading.Thread(target=run,args=('t1',))
    # t2 = threading.Thread(target=run,args=('t2',))
    # t1.start()
    # t2.start()
    run('t1')
    run('t2')

運行結果:

task t1
2s
1s
0s
task t2
2s
1s
0s

發現是分步執行的,這下入門了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章