@nekolov

Является ли данный код многопоточным?

Добрый день,
вот упрощенный пример части моего кода в которой я пробую использовать многопоточность, но увы прироста в скорости я совсем не замечаю. Собственно вопрос.... Все ли верно реализовано?

#!/usr/bin/env python3

import threading
import requests

start_id = 1
last_id =  99999999
max_thread = 10


def save_progress(f_name, userid):
    f = open(f_name, 'w+')
    f.write(str(userid))
    f.close()


def get_data(userid):
   url = "https://vk.com/id" + userid

   r = requests.get(url, headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"})

   if(r.status_code == 200):
       if((len(r.content)) > 87013):
           print('found vk profile')


class DownloadThread(threading.Thread):
        def __init__(self, name, userid):
            threading.Thread.__init__(self)
            self.name = name
            self.userid = userid

        def run(self):
            get_data(self.userid)


def main():
    global start_id

    if os.path.exists('./start_id.log'):
        f = open('./start_id.log', 'r')
        start_id = int(f.readline())
        f.close()


    for i in range(start_id, last_id):
        try:
            while True:
                if len(threading.enumerate()) <= max_thread:
                    thread = DownloadThread('Thread-' + str(i), i)
                    thread.start()
                    break

        except:
            e = sys.exc_info()[0]
            print('Got exception in main: ', e)
            save_progress('./start_id.log', userid)
            break

if __name__ == "__main__":
    main()
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы