Получение повторяющихся значений в списке при использовании пула потоков Python

Я не уверен, что вызывает это.

Пул потоков с 50 рабочими, которые запрашивают 4000 сайтов. Они сбрасывают уникальное значение с каждого сайта и добавляют его к глобальной переменной списка. Переменная возвращаемого списка иногда имеет повторяющиеся значения. Любая мысль о том, почему это может произойти.

Минимальный пример:

class Example(list):


 def _request(self, list_element):
     if condition:
            self.append(list_element)


 def request(self, threads=0, func='_request', 
   from timeit import default_timer as timer
   from gevent import pool
   import gevent
   length = len(self)
   if not threads:
      if length > 1000:
          threads = 500

   if threads < length <= 1000:
        threads = int(length / 2) + 1

   the_list = self[:]
   self[:] = []
   start = timer()

   pool = gevent.pool.Pool(threads)
   temp_func = eval(f'self.{func}')
   for result in tqdm(pool.imap_unordered(temp_func, the_list)):
      pass
   pool.join()
   print("Done.")
   end = timer()
   print(end - start)
   return self

Спасибо за ваше время. Любая помощь приветствуется.

-1
задан MortyAndFam 13 July 2018 в 22:37
поделиться