Python實現5執行緒併發處理多個URL

2021-10-01 11:57:32 字數 1441 閱讀 9246

這裡我們介紹如何用 pool執行緒池去新增佇列實現併發請求

上**

from concurrent.futures import threadpoolexecutor

#從concurrent.futures 引入執行緒池模組

import requests

import time

from time import localtime,strftime

from bs4 import beautifulsoup

defmain

(url)

: res=requests.get(url=url)

res.encoding=

'gbk'

return soup(res.text)

defsoup

(text)

: title =

'#resultlist > div > p > span > a'

sou=beautifulsoup(text,

'lxml'

) _ti=sou.select(title)

for i in _ti:

print

(i.get_text(

).strip())

if __name__ ==

'__main__'

: time1=strftime(

"%y-%m-%d %h:%m:%s"

, localtime())

#當前時間

pool=threadpoolexecutor(20)

#建立5個執行緒

with

open

('../link/918306.txt'

)as f:

urldocker=

#建立乙個列表為空

for i in f:))

#逐步新增列表

for i in urldocker:

pool.submit(main,i)

#向執行緒提交任務

pool.shutdown(wait=

true

)#wait=true

time2 = strftime(

"%y-%m-%d %h:%m:%s"

, localtime())

#當前時間

print

(time1,time2)

這的意思是,假設我有乙個txt文字,裡面存放了一千個url.

單純的for迴圈只能單詞去請求

所以這裡我們先開啟文字,逐步迴圈新增至乙個list裡面儲存:

通過concurrent裡面pool執行緒池,建立5個執行緒。submit逐步新增函式方法和引數。

python併發程式設計 多執行緒同步非同步處理

在學習python多程序時,程序上執行的方法接收多個引數和多個結果時遇到了問題,現在經過學習在這裡總結一下 pool.map 多引數任務 在給map方法傳入帶多個引數的方法不能達到預期的效果,像下面這樣 def job x y return x y if name main pool multipr...

併發及併發的執行緒安全處理

目錄 執行緒安全性 原子性提供了互斥訪問,同一時刻只有乙個執行緒可以來對它操作 原子包 具有原子性,執行緒安全的,atomicint 原始碼實現unsafe類的getandaddint實現原理 迴圈判斷當前的值和主記憶體值是否一致,相等就加一,用到的算 法cas全稱compareandswapint...

JAVA 併發執行緒異常處理

執行緒中如果有未處理的異常,放在try catch模組裡可能會捕獲不到.此處有個解決方法 class myuncaughtexceptionhandler implements thread.uncaughtexceptionhandler public void uncaughtexception...