Fuse might call read(...) on the file class from multiple threads, causing a race condition with the underlying seek/read operations. Using locking here seems to make the file access slower, than just disabling the multithreading in Fuse with fs.multithreading = False. A thread-local storage doesn't help either, because Fuse doesn't seem to reuse threads, but might create new threads for each read operation.