python多執行緒 採集ip並驗證

2021-08-10 03:41:09 字數 1709 閱讀 1834

python因gil的設計使得單cpu同一時刻只能執行乙個執行緒,所以多執行緒在python中主要用於io較多的場景。前段時間需要採集一些免費ip**,就應用多執行緒對採集來的**進行目標**的連通性進行批量驗證。

python通過兩個標準庫thread和threading提供對執行緒的支援。thread提供了低階別的、原始的執行緒以及乙個簡單的鎖。

threading 模組提供的其他方法:

threading.currentthread(): 返回當前的執行緒變數。

threading.enumerate(): 返回乙個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。

threading.activecount(): 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果。

除了使用方法外,執行緒模組同樣提供了thread類來處理執行緒,thread類提供了以下方法:

run(): 用以表示執行緒活動的方法。

start():啟動執行緒活動。

join([time]): 等待至執行緒中止。這阻塞呼叫執行緒直至執行緒的join() 方法被呼叫中止-正常退出或者丟擲未處理的異常-或者是可選的超時發生。

isalive(): 返回執行緒是否活動的。

getname(): 返回執行緒名。

setname(): 設定執行緒名。

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

#import ......

defmt_validate

(ip, port, target_urls):

""" param:ip:

param:port:

param:target_urls: list

return:

"""for i in len(target_urls):

exec('validate%d = 0' %i)

for i, target_url in enumerate(target_urls):

try:

r = requests.get(target_url, proxies=, timeout=8 , headers={})

except exception:

pass

else:

if r.status_code == 200:

exec('validate%d = 1' %i)

validate = reduce(lambda x, y: x+y, [eval('validate%d' %i) for i in len(target_urls)])

#if validate!='0'*len(target_urls):

#......

#......

while

true:

if threading.active_count() < 200:

t = threading.thread(target=mt_validate, args=(ip, port))

t.start()

logging.log(threading.active_count())

break

else:

time.sleep(0.3)

python多執行緒採集例項

python多執行緒採集例項 python作為一種流行的指令碼程式語言,其功能的強大自然不言而喻,豆瓣網就是使用python開發的,另外很多的it公司了在使用python,也充分說明了python的強大,下面是python多執行緒採集例項 python多執行緒採集例項 coding gb2312 a...

pthreads多執行緒資料採集

以前使用curl的多執行緒並不是真正的多執行緒,只是一種模擬的多執行緒,現在使用pthreads來實現真正意義上的多執行緒。windows下 mac unix linux下 安裝方式 windows下 解壓得到pthreadvc2.dll和php pthreads.dll檔案,把vc2檔案放到php...

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...