我現在有80個用戶名的列表,我有我的腳本檢查每個用戶名是否存在。然而,它需要比我喜歡的時間長一點,所以我想知道是否有任何事情可以做,以加快需要多長時間來檢查每個用戶名是否存在。任何可能的方式來加快處理這個?
# ------------------------------
# Mass Kik Username Checker
# Script Made by: Ski
# ------------------------------
import requests, threading
def check(username):
try:
req = requests.get("http://kik.me/"+username, allow_redirects=False).status_code
if req == 302:
return False
if req == 200:
return True
except Exception as e:
print e
exit()
def _loadList(filename):
item_list = []
for item in str(open(filename, "r").read()).split("\n"):
item_list.append(item)
return item_list
def _thread(items):
global _usernames
for username in _usernames[items[0]:items[1]]:
exists = check(username)
if exists:
print username+" exists\n"
if not exists:
print username+" doesn't exist\n"
if __name__ == '__main__':
_usernames = _loadList("usernames.txt")
thread1 = threading.Thread(target=_thread, args=([0, 20],)).start()
thread2 = threading.Thread(target=_thread, args=([20, 40],)).start()
thread3 = threading.Thread(target=_thread, args=([40, 60],)).start()
thread4 = threading.Thread(target=_thread, args=([60, 80],)).start()
使用概要分析來確定你的瓶頸 – Moritz
莫里茨也是一個不錯的建議,但如果它是不完全清楚,他是指的是'profile'和'cProfile'標準庫模塊。 'cProfile'是首選。 –
創建超過4個工作線程的池,爲什麼不是80或更多。並使用隊列與線程通信,而不是全局變量(這不是爲了性能,而是爲了代碼的正確性)。 – uselpa