我已经搜索了很多东西,但是我找不到我的代码有什么问题。 它是一个代理检查器,我使用线程创建了一个for循环,并希望它在完成循环后打印“ FINISHED”:
def cthread():
while len(proxies) > 0:
proxy = proxies.pop(0)
try:
requests.get(url, proxies={'https':proxytype+"://"+proxy}, timeout=timeout)
print(proxy, '< GOOD PROXY')
with open('working.txt', 'a') as proxywork:
proxywork.write(proxy + '\n')
proxywork.flush()
except:
try:
print(proxy, ' > BAD')
except:
print("ERROR")
for i in range(tc):
threading.Thread(target=cthread).start()
configuration.close()
print("FINISHED")
time.sleep(900.0 - ((time.time() - starttime) % 900.0))
但是它甚至在检查一半代理之前都会打印“完成”,我希望它在for循环结束后这样做。
感谢您的帮助:)
答案 0 :(得分:2)
在循环启动每个线程之后,您需要加入每个线程以等待其完成。
threads = [threading.Thread(target=cthread) for _ in range(tc)]
for t in threads:
t.start()
# Do stuff here while threads are running
# Now wait for all threads to complete
for t in threads:
t.join()
configuration.close()
print("FINISHED")
time.sleep(900.0 - ((time.time() - starttime) % 900.0))