Я пытаюсь запустить два бесконечных цикла последовательно, и у обоих из них есть вызовы методов к классу базы данных с операторами SQLite.
Я пытался использовать процессы вместо потоков, но безрезультатно.
Мне нужно иметь два разных потока, чтобы программа не застревала в первом бесконечном цикле, но затем он выбрасывает операторы SQLite в разные потоки, и я получаю ошибку.
def method_a():
while True:
last, timestamp, symbol = conn_api.getmetrics()
db.insertdb(last, timestamp, symbol) # first SQLite stmt of method_a
print("Do stuff")
if db.get_row_count() > 200: # second SQLite statement of method_a
db.delete_row() # third SQLite statement of method_a
time.sleep(1)
def metod_b():
while True:
if db.get_row_count() > 200: # first SQLite stmt of method_b
print("Do more stuff")
time.sleep(10)
if __name__ == "__main__":
t1 = Thread(target=method_a)
t2 = Thread(target=method_b)
t1.setDaemon(True)
t2.setDaemon(True)
t1.start()
t2.start()
Я получаю следующую ошибку:
sqlite3.ProgrammingError: объекты SQLite, созданные в потоке, могут использоваться только в этом же потоке. Объект был создан в идентификаторе потока 6556, а это идентификатор потока 9656.
Я надеюсь, что каждую секунду получаю вывод "Делай вещи"
и "Делай больше вещей" каждые 10 секунд.
а также вставка в базу данных, чтение из базы данных
и удаление из базы данных.