При работе в один поток все хорошо. Проблема возникает при многопточность один поток успевает быстро удалит файл а второй естественно не может его открыть. Как реализовать правильно работу с такой вот логикой ?
Заранее извиняюсь за свой быдлокод и за сумбурность текста .
THREADS = 10 # количество потоков
KOLICESTVO = 10 #Количество повторений
queue = Queue.Queue()
#---------------------------------------
def stroka_del(filename): # Функция которая берет строчку из файла и удаляет её
stroki = open(filename).readlines()
stroka = stroki[0]
del stroki[0]
os.remove(filename)
for i in stroki:
zap = ('{0}\n').format(i.strip())
f3 = open(filename, "a")
f3.write (zap)
f3.close()
return stroka
def stroka_vozvrat(filename,stroka): # функция которая возврашаят строку
zap = ('{0}\n').format(stroka.strip())
f3 = open(filename, "a")
f3.write (zap)
f3.close()
put_file = (r'E:\test.txt')
def test():
text = 'Тестовое сообщение' # какойто текст
if text:
stroka = stroka_del(put_file) # удаляем строку
print stroka
else:
stroka_vozvrat(put_file,stroka) # если текст не найден то возврашаем строку
def repeat():
while True:
try:
item = queue.get_nowait() # ждём данные
except Queue.Empty:
break
test()
time.sleep(0.5)
queue.task_done() # задача завершена
def main():
for i in xrange(KOLICESTVO):
queue.put(i) # заносим данные в очередь
for i in xrange(THREADS):
t = threading.Thread(target=repeat) # создаем нить
t.start() # стартуем
time.sleep(0.5)
queue.join()
print "Done"
if __name__ == '__main__':
main()