這裡我們介紹如何用 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...