Я не уверен, что вызывает это.
Пул потоков с 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
Спасибо за ваше время. Любая помощь приветствуется.