Всем доброго! Только изучаю Python, и вот столкнулся с проблемой:
Есть у меня функция для работы с таблицамы google, в ней я считываю количество заполненых
row и в
row_count +1 заношу новые данные. Но процесс записи в таблицу занимает много времени, и я решил выполнять это действия в новом потоке, для того, чтобы можно было принимать новие запросы на запись в таблицу. Но у меня получается каждый раз новый поток, а нужно просто скаладывать в очередь в этом отдельном потоке, потому как запрос на получения количества заполненых
row выполняется быстро, получается так, что я записую разные данные в одну и ту же
row, так как
row_count все ище прежний, ибо предыдущая запись ище только в процеси и пока не закончилась
def append_to_sheet(id):
action_time = datetime.now().strftime("%Y.%m.%d %H:%M:%S")
row = [action_time, id]
row_count = len(sheet.get_all_values())
index = row_count +1
sheet.insert_row(row, index)
def start_with_thread():
while True:
id = q.get()
append_to_sheet(id)
q.task_done()
и вызивается это
t = threading.Thread(target=start_with_thread)
t.setDaemon(True)
t.start()
q.put(id)
каждый раз при получении запроса на запись в таблицу, и соответсвено каждый раз создается новый поток в котором
row_count будет одно и то же значения если новый запрос поступил раньше нежели закончилась преддыщая запись в таблицу. Как то так