Administrador de contexto SQlite3 con bloqueo de archivos en python 2.7

¿Es esta la buena manera de bloquear archivos con reentrada en un administrador de contexto en Python 2.7? Solo quiero asegurarme de que rlock () va a ser efectivo para poder obtener una aplicación multiproceso para usar un solo archivo de base de datos.

import sqlite3
import threading
import os

class ConnectionHolder:
    def __init__(self, connection):
        self.path = connection
        self.lock = threading.RLock()

    def __enter__(self):
        self.lock.acquire()
        self.connection = sqlite3.connect(self.path)
        self.cursor = self.connection .cursor()
        return self.cursor


    def __exit__(self, exc_class, exc, traceback):
        self.connection .commit()
        self.connection .close()
        self.lock.release()

conn_holder = ConnectionHolder(os.path.join(os.path.dirname(__file__), 'data/db/database.db'))

if __name__ == '__main__':
    with conn_holder as c:
        c.execute("SELECT * FROM 'sample_table'")
        result = c.fetchall()
        print result