Выполнение функции с помощью threading.Timer с условиями - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу выполнять getData функцию каждую 1 секунду только в течение 60 итераций, и после этого я хочу выполнить foo функцию.

def getDate():
    q = client.getQuotes(['EURUSD'])
    print q

Я знаю, как запускать его каждые 1 секунду (с помощью threading.Timer), но я не смог выяснить, как это сделать для определенной итерации, а также дождаться завершения итерации функции timer.join()

1 Ответ

0 голосов
/ 26 сентября 2018

Вот пример того, как это сделать:

import threading
import time

ITERATIONS = 60

# this could be any function
def afunc(t):
    # the 't' argument is just to clarify the output
    for i in range(2):
        print('in timer #' + str(t) + ': ' + str(i))
        time.sleep(0.2)

timers = []
for t in range(ITERATIONS):
    # create a timer for this iteration (note the interval will be from 1.0 to the number of iterations)
    ti = threading.Timer(1.0 + t, afunc, args=[t])
    # save the timer in a list
    timers.append(ti)
    # start the timer
    ti.start()

# wait for them all
for ti in timers:
    ti.join()

print( 'all finished, call any other method here')
...