Знаю, что не по правилам просить сделать за меня какую-либо работу, без собственных наработок. Нет мне оправдания, в общем.
Но, с Вашего разрешения, я все же попробую….
Имеем такой проект (основная часть кода урезана), использующий селениум вебдрайвер.
Необходимо сделать многопоточное приложение, но… Я еще не сталкивался с многопоточностью, мне тяжело себе даже представить стуктуру кода. Плюс к этому: приложение использует доступ к файлам (как в основном методе start(), так и в цикле: get_acc()). О локах и очередях, я конечно слыхивал, но опять же - не практиковал…
Прошу дать мне не хилый пинок, и наградить каким-нибудь абстрактным скелетом, дальше думаю я сам разберусь, согласно докам (чтение которых иногда вводит меня в жесткий ступор, благо стековер и гугл еще в моем распоряжении)
#imports def is_element_present(driver, how, what): try: driver.find_element(by=how, value=what) except NoSuchElementException: return False return True def load_data(filename): with open(filename, 'r') as file: data_list = [line.strip() for line in file] file.close() return data_list def get_mail(): mails = load_data('mails.txt') rand_mail = mails[0] mails.remove(rand_mail) with open('mails.txt', 'w') as file: [file.write('%s\n' % ml) for ml in mails] file.close() return rand_mail def get_acc(): accs = load_data('accs.txt') acc = accs[0] accs.remove(acc) with open('accs.txt', 'w') as file: [file.write('%s\n' % ml) for ml in accs] file.close() return acc def save_valid(data): with open('valid.txt', 'a') as file: file.write('%s\n' % data) file.close() def start(prox, login, passw): .... get_mail() .... def check_proxy(proxy): import requests, requests.exceptions #http://user:pass@10.10.1.10:3128/ proxies = {"http": proxy} try: resp = requests.get('http://seemyip.com/', proxies=proxies, timeout=10).text except requests.exceptions.RequestException: print('can\'t connect to proxy %s' % proxy) return False return True accs = load_data('accs.txt') proxy = load_data('proxy.txt') for pr in proxy: if check_proxy(pr): x = get_acc() mail, passw = x.split(':') start(pr, mail, passw)
