我写了个每 50 秒自动登陆查询多个 ID 相关信息的代码,用到了多线程,每次执行前,都清空了一次多线程列表,thread_list = [],为何子线程执行后,print 出来的线程 ID 名一直是累加的,就是
thread - 1,
thread - 2,
………………
thread - 1000
一直是这样加下去,而不是每 50 秒恢复一次。这是不是代表服务器同时打开了这么多线程呢?请问如何真正清空线程,让服务器只执行真正用到的 10 个线程。
代码写得较粗糙,恳请各位帮优雅优化一下,感谢
import threading
import time
import requests
from threading import current_thread
def autocheck():
while True:
bktels = []
thread_list = []
bktels = ['ID1','ID2','ID3','ID4','ID5','ID6','ID7','ID8','ID9','ID10']
for n in bktels:
th = threading.Thread(target=getPID, args=(n,))
thread_list.append(th)
for t in thread_list:
t.start()
for t in thread_list:
t.join()
time.sleep(50)
def getPID(n):
threada = threading.current_thread()
str2 = ','.join('%s' %id for id in n)
print (threada.getName() +' ID:'+str2)
url = 'http://127.0.0.1/login.php?id=' + str2
html=requests.get(url)
print html.text
autocheck()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://study.congcong.us/t/461256
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.