2016-06-18 3 views
-1

Я получаю данные от потокового API, который я вставляю в список (этот список получает данные примерно 8 часов в день), а затем через определенный период времени выполняют некоторые вычисления, а затем вставляют результаты тех вычислений в другой список, тогда подождите еще один период времени и выполните вычисления в этом списке, чтобы создать третий список. Каков наилучший способ сделать это в Python? Псевдокод:Создание списка временного списка Python

FirstList(): 
''' Wait 15 minutes to create first list''' 

SecondList(): 
'''Calculate results from first list and create a second list after given period of time''' 

ThirdList(): 
''' Calculate results from SecondList and create third list after a given period of time''' 
+0

Не могли бы вы показать нам, что вы пробовали? – user2027202827

+1

Просто используйте https://pypi.python.org/pypi/timeout-decorator для ваших методов или функций. – dmitryro

+0

Дубликат http://stackoverflow.com/questions/3433559/python-time-delays? –

ответ

0

Вы можете использовать Timer класс от Threading модуля Python.

Ваша программа будет выглядеть примерно так:

from threading import Timer 

def buildLists(): 
    global list1, list2, list3 
    list1 = FirstList() 
    # Calculate other two lists 
    list2 = SecondList() 
    list3 = ThirdList() 

# Run buildLists after 15 minutes (900 seconds) 
listTimer = Timer(900.0, buildLists) 
listTimer.start() 

Как это работает, путем создания экземпляра таймера, который запускает функцию по завершении.

Мне было непонятно, что именно вы имели в виду под '' 'Вычислить результаты из первого списка и создать второй список по истечении заданного периода времени' '', чтобы раздел мог быть изменен в соответствии с вашими конкретными потребностями , но общий метод должен работать на вас.

+0

Спасибо за идею @ rp.beltran, но если я правильно понял ваш код, он начнет создавать первый список после 15-минутной задержки. Я не очень хорошо себя объяснил. Дай мне попробовать снова. Мне нужно, чтобы list1 содержал значения из потока данных в течение 15 минут; list1 должен содержать вложенный список из 15-минутных данных (например, list1 [[15minsofdata], [2nd15minsofdata] ...]) и никогда не прекращать создание этого списка. Оттуда я извлекаю необходимые значения из каждого вложенного списка в списке1 и вставляю эти значения в список2, создавая другой вложенный список. – namor

+0

Подводя итог: после 45-минутной задержки, когда len (list1) == 3, x = рассчитанные результаты из 3 вложенных списков в списке1, тогда list2.append (x), когда len (list2) == 3, r = расчеты из 3 списка в списке2, затем list3.append (r). Подождите 15 минут, подсчитайте последние 3 списка в списке1 и добавьте их в список2. – namor

Смежные вопросы