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

歡迎訪問 生活随笔!

生活随笔

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

python

python3线程池爬虫_python3爬虫中多线程的优势总结

發布時間:2025/3/12 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3线程池爬虫_python3爬虫中多线程的优势总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有些小伙伴跟小編討論了python中使用多線程原理的問題,就聊到了關于python多線程的弊端問題,這點可能在使用的過程中大家會能感覺到。而且之前講過的GIL也是對python多線程的一種限制。那么,我們為什么還要用多線程呢?當然是多線程的優勢已經掩蓋了它本身不足之處,所以我們來加強一下學習python多線程的信心吧~

總結起來,使用多線程編程具有如下幾個優點:

進程之間不能共享內存,但線程之間共享內存非常容易。

操作系統在創建進程時,需要為該進程重新分配系統資源,但創建線程的代價則小得多。因此,使用多線程來實現多任務并發執行比使用多進程的效率高。

Python 語言內置了多線程功能支持,而不是單純地作為底層操作系統的調度方式,從而簡化了 Python 的多線程編程。

threading模塊

普通創建方式

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()

----------------------------------

>>> task t1

>>> task t2

>>> 2s

>>> 2s

>>> 1s

>>> 1s

>>> 0s

>>> 0s

守護線程

我們看下面這個例子,這里使用setDaemon(True)把所有的子線程都變成了主線程的守護線程,因此當主進程結束后,子線程也會隨之結束。所以當主線程結束后,整個程序就退出了。

import threading

import time

def run(n):

print("task", n)

time.sleep(1) #此時子線程停1s

print('3')

time.sleep(1)

print('2')

time.sleep(1)

print('1')

if __name__ == '__main__':

t = threading.Thread(target=run, args=("t1",))

t.setDaemon(True) #把子進程設置為守護線程,必須在start()之前設置

t.start()

print("end")

----------------------------------

>>> task t1

>>> end

我們可以發現,設置守護線程之后,當主線程結束時,子線程也將立即結束,不再執行。

python多線程實例代碼:

1個線程時:

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/2.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/3.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/4.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/5.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/6.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/7.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/8.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/9.html

Done, Time cost: 8.182249069213867

2個線程時:

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/2.html

Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/3.html

Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/4.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/5.html

Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/6.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/7.html

Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/8.html

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/9.html

Done, Time cost: 4.0987958908081055

總結

以上是生活随笔為你收集整理的python3线程池爬虫_python3爬虫中多线程的优势总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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