На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Дополнительные параметры в ThreadPool(threads).imap_unordered
      Подскажите пожалуйста, как можно расширить код, чтобы была поддержка добавить во многопоточное приложение дополнительных параметров так, чтобы все они так же учитывались.

      То есть например, есть просто параметр:
      urls = {
      список ссылок
      }

      Программа в многопоточном режиме обходит каждую ссылку.
      Я же хочу

      urls = {
      список ссылок
      }

      data = {
      список данных
      }

      Количество ссылок умножаются на количество данных.

      Приведу свой новичковый код, может намекнете.
      С меня плюсики за любые наводки

      ExpandedWrap disabled
        #!/usr/bin/env python
        from multiprocessing.pool import ThreadPool
        from time import time as timer
        import urllib
        import urllib2
         
        threads = 50
        timeout = 5
         
        urls = open("urls.txt").read().splitlines()
        # TODO: добавить дополнительный параметр
        data = open("data.txt").read().splitlines()
         
        def check_urls(url):
         
            try:
         
                values = {
                    # здесь будут передаваться данные
                    # TODO: в идеале и третий параметр это рандомный юзерагент
                }
         
                headers = {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 OPR/37.0.2178.43"
                }
         
                tstart = timer()
                post = urllib.urlencode(values)
                request = urllib2.Request(url, post, headers)
                response = urllib2.urlopen(request, timeout=timeout)
                return url, response, None, tstart
         
            except Exception as e:
                return url, None, e
         
        start = timer()
         
        results = ThreadPool(threads).imap_unordered(check_url, urls)
         
        for url, body, error, tstart in results:
            if error is None:
                status = body.read()
                # ...
            #else:
                #print("error")
         
        print("Elapsed time: %s" % (timer() - start))
      Сообщение отредактировано: diel -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0136 ]   [ 15 queries used ]   [ Generated: 28.03.24, 21:26 GMT ]