在Python中,可以使用線程池來實現并發請求數據。下面是一個簡單的示例代碼:
import requests
from concurrent.futures import ThreadPoolExecutor
# 定義請求函數
def fetch(url):
response = requests.get(url)
return response.text
# 定義線程池處理函數
def handle_requests(urls):
# 創建線程池
with ThreadPoolExecutor(max_workers=5) as executor:
# 提交請求任務到線程池
futures = [executor.submit(fetch, url) for url in urls]
# 獲取請求結果
for future in futures:
result = future.result()
# 處理請求結果
# ...
# 主函數
if __name__ == "__main__":
urls = ["http://example.com", "http://example.org", "http://example.net"]
handle_requests(urls)
在上面的代碼中,首先定義了一個fetch
函數,用于發起HTTP請求并返回響應結果。然后定義了一個handle_requests
函數,該函數接受一個URL列表作為參數,使用線程池來并發發起請求。最后,在主函數中調用handle_requests
函數并傳入URL列表。
值得注意的是,ThreadPoolExecutor
是Python標準庫concurrent.futures
中的一個線程池實現,通過submit
方法可以將任務提交到線程池中,并返回一個Future
對象。通過調用Future
對象的result
方法可以獲取任務的結果。在實際使用中,可以根據具體需求對請求結果進行處理。
需要注意的是,在使用線程池處理并發請求時,需要考慮到線程安全的問題,以及合理控制線程池的大小,避免過多的線程造成系統資源的浪費。