from flask import Flask
import threading
import sqlite3

app = Flask(__name__)

# Create a lock for synchronizing access to the database
lock = threading.Lock()

def my_background_process():
    # Acquire the lock
    lock.acquire()

    # Connect to the in-memory database
    conn = sqlite3.connect(':memory:')
    c = conn.cursor()

    # Create a table in the database
    c.execute("CREATE TABLE mytable (col1 INTEGER, col2 TEXT)")

    # Write to the database
    c.execute("INSERT INTO mytable (col1, col2) VALUES (?, ?)", (value1, value2))
    conn.commit()

    # Close the connection
    conn.close()

    # Release the lock
    lock.release()

@app.route('/')
def read_from_database():
    # Acquire the lock
    lock.acquire()

    # Connect to the in-memory database
    conn = sqlite3.connect(':memory:')
    c = conn.cursor()

    # Read from the database
    c.execute("SELECT * FROM mytable")
    rows = c.fetchall()

    # Close the connection
    conn.close()

    # Release the lock
    lock.release()

    # Return the rows to the client
    return rows

if __name__ == '__main__':
    # Create a new thread for the background process
    thread = threading.Thread(target=my_background_process)

    # Start the thread
    thread.start()

    # Start the Flask app
    app.run()

