Код после a для l oop выполняется до окончания цикла - PullRequest
1 голос
/ 25 апреля 2020

Я много искал и не могу найти, что не так с моим кодом. Это прокси-проверка, и я сделал для l oop с многопоточностью, и хочу, чтобы он печатал "FINISHED" после завершения l oop:

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))

, но он печатает "FINISHED" до того, как даже проверяя половину прокси, и я хочу, чтобы это было сделано после завершения операции для l oop.

Спасибо за помощь:)

1 Ответ

2 голосов
/ 25 апреля 2020

Вам нужно присоединиться к каждому потоку, чтобы дождаться его завершения после того, как l oop запустит каждый поток.

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...