2010-11-24 3 views
2

Вот моя проблема: мне нужно часто выполнять операции чтения/записи в один файл с помощью разных потоков, и я стараюсь использовать threading.RLock(). Приобретать() и threading.RLock(). Release() для блокировки ресурса (например, один txt-файл). Дело в том, что вы можете легко выполнять операции записи файлов в определенном потоке, как вы получаете возвращаемое значение в потоке? Вот мой пример кода:Как часто выполнять операции чтения/записи файлов (многопоточные) в python?

FileLock = threading.RLock() 

def FileReadingWriting(self, Input, Mode) 

    #### Input: things to write 
    #### Mode: 1 - write to the file 
    ####   2 - read from the file 

    FileLock.acquire() 

    if Mode == 1: 
     TheFile = open("example.txt", "w") 
     TheFile.write(Input) 
     TheFile.close() 
    elif Mode == 2: 
     TheFile = open("example.txt", "r") 
     Content = TheFile.read() 
     TheFile.close() 

     return Content #### Obviously this won't work, but if I want to get the content in a thread, how should I code? 

    FileLock.release() 

ответ

0

Вы должны использовать переменную, доступную как для рабочего потока, так и для основного потока.

Например, рабочий поток может получить в качестве ссылки ссылку на какой-либо объект и заполнить его, когда это будет сделано. Основной поток будет ждать рабочих потоков, чтобы закончить, а затем проверит объекты.

Смежные вопросы