У меня есть программа для удаления веб-страниц, которая очищает тысячи веб-сайтов. Тем не менее, это очень медленно. Я нашел некоторые вещи в concurrent.futures, которые я пытаюсь реализовать; Тем не менее, я не могу получить хороший gr asp о том, как это работает. Я приложил простой код ниже для кого-то, чтобы помочь объяснить концепцию, но в моей другой программе, он перебирает значения x, но, похоже, пропускает некоторые x. Я не знаю, происходит ли это из-за того, что запущено несколько потоков, и им не хватает их, или что происходит. Я надеюсь, что объяснение этого кода поможет мне понять, как приблизиться к другому коду.
Когда я запускаю приведенный ниже код, он выводит несколько цифр и несколько раз. Например, он показывает 456, 789100, 123, 45, 678910012 на отдельных строках, плюс еще кучу. Я не уверен, что понимаю, почему он повторяется несколько раз и печатает их все несколько раз. Любая помощь с этими, казалось бы, простыми понятиями будет высоко ценится.
import time
import concurrent.futures
from concurrent.futures import ProcessPoolExecutor, as_completed
a=[0,1,2,3,4,5,6,7,8,9,10]
def printNumbers(a):
print(a)
with concurrent.futures.ThreadPoolExecutor(max_workers=30) as executor:
start = time.time()
futures = [executor.map(printNumbers, a) for url in a]
#results = []
#for result in as_completed(futures):
# results.append(result)
# print(results)
#futures = [executor.submit(testing,url) for url in urlList]
#results = []
#for result in as_completed(futures):
# results.append(result)
end=time.time()
print("Time taken: {:.6f}s".format(end-start))
print('break')