У меня есть скрипт на python, в котором есть глобальная переменная object_list
Я запускаю 5 параллельных потоков, вызывающих функцию для чтения objects
из SQS и добавления в тот же список.Как показано ниже: -
object_list = []
def operate(obj_array):
for obj in obj_array:
# some calculation.
# obj is of type dict.
obj.clear()
# either i can clear each object in the for loop or delete the obj_array at the end.
del obj_array
def append_to_list(sqs):
global object_list
object_list.append(sqs)
if len(object_list) > 100:
o = Thread(target=operate, args=(object_list,))
o.start()
object_list = []
def object_reader(process_number):
print process_number
for msg in queue.get_messages():
obj = json.loads(msg.get_body())
t = Thread(target=append_to_list, args=(obj,))
t.start()
for x in xrange(5):
t = Thread(target=object_reader, args=(x,))
t.start()
Как показано в приведенном выше коде, я хочу, чтобы программа запустила 5 потоков для чтения из SQS и добавила объекты в один глобальный список.
Как только длина списка превысила 100 iЯ хочу работать с этим списком в другом потоке, а также сделать глобальный список пустым, чтобы повторить то же самое.
Проблема заключается в том, что моя программа работает в бесконечном цикле (24x7), но память сценариев продолжает увеличиваться и превышатьограничение контейнера, которое приводит к уничтожению контейнера.
Я не знаю, почему память продолжает увеличиваться, поскольку я очищаю глобальный список, когда он превышает размер 100.