日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python多线程有用吗_Python多线程理解

發布時間:2025/3/15 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python多线程有用吗_Python多线程理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在寫python爬蟲的時候遇到了多線程,使用多線程的目的是降低抓取時間。接著我接觸了一些IO概念,IO就是Input和Ouput,數據進出CPU的意思。

數據從網線或網卡進入CPU算Input(get請求得到源碼),反之就是Output,這是網絡IO。

數據從硬盤進入CPU也是Input,反過來就是Output(把數據write進文件),這是磁盤IO。

先不細究IO的原理,只需要知道有IO(IO密集型任務),就用python多線程,提高效率。

概念

怎么理解線程:

線程可以是一整個Py程序,也可以是Py文件里的一個函數。如果Py程序或者函數開始執行了,你也可以說線程開始執行了。

上個圖

接下來是并發和并行

python的多線程是并發還是并行呢?  答案是并發。

同一時間還是只干一件事,跟單線程沒什么兩樣,所以有大佬說python的多線程就雞肋。

不過.....對于IO密集型任務,會大概率遇到阻塞(等待),CPU等待的時候就不做事,相當于浪費了。這里使用多線程就有幫助。

掛起、競爭gil的操作是由系統調度的,我們不用管。掛起、競爭、另一個線程開始執行,這個過程會消耗一點時間,稱切換時間

若切換時間<

最后一個重要的概念是主線程、子線程

子線程其實就是你要并發(同一時間窗做很多次)的任務,比如get請求和write入文件。

這些任務一般都會寫進一個函數func或者類里面,然后兩步走

thread? =? Threading.Thread(target =函數func,args=(參數1,參數2))    #用Thread類包(封裝)起來

thread.start()  #start之后就開始跑了

等待,還有一個東西Join()、setDaemon(True)  阻塞和守護線程

Join()  ==  當一些任務要先于另一些任務完成的時候,可以用

setDaemon?  ==  當你覺得一些線程不重要的時候,可以設置守護線程。

對于非守護線程,就算主線程執行完了,也要等非守護進程完成才能退出

實例:一個搶車票的例子

總結

以上是生活随笔為你收集整理的python多线程有用吗_Python多线程理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。