В части моего программного кода, написанного с помощью python, у меня есть список элементов, размер которых может сильно варьироваться от 12 до одного элемента. Для каждого элемента в этом списке я делаю некоторую обработку (отправка HTTP-запроса, связанного с данным элементом, результаты синтаксического анализа и многие другие операции. Я хотел бы ускорить мой код с помощью потоковой передачи, я хотел бы создать 2 потока где каждый из них принять ряд элементов и сделать асинхр обработкиКак добавить потоки в зависимости от числа
Пример 1:. Допустим, что в моем списке у меня есть 12 пунктов, каждый поток будет принимать в этом случае 6 пунктов и вызов функции обработки на каждом пункт
Пример 2:. Теперь давайте предположим, что мой список есть 9 пунктов, один поток будет принимать 5 пунктов, а другой поток принимает бы другие 4 оставил пункты
.В настоящее время я не прилагая каких-либо многопоточность, и мой код базы очень большой, так что здесь какой-то код, который делают почти то же самое, как мой случай:
#This procedure need to be used with threading .
itemList = getItems() #This function return an unknown number of items between 1 and 12
if len(itemList) > 0: # Make sure that the list is empty in this case .
for item in itemList:
processItem(item) #This is an imaginary function that do the processing on each item
Ниже приведен базовый код облегченный, что объяснить, что я «Я делаю, я не могу понять, как я могу сделать мои потоки гибкими, поэтому каждый из них принимает несколько элементов, а другой берет остальные (как описано в примере 1 & 2).
Спасибо за ваше время
Посмотрите на исполнителей темы. Запустите исполнителя с двумя потоками и просто отправьте все свои предметы на него. Это имеет то преимущество, что делает всю бухгалтерскую отчетность для вас и выясняет, какая нить должна выполнять следующую работу таким образом, чтобы поддерживать как максимально занятую работу. –