0
Пожалуйста, ознакомьтесь с основного примеромPython Сохранения процесса (закрытие обработчик файлов)
def queue_add():
#this will exit when all lines from the
#file are added in the Queue
with open('get_from.txt') as f:
for line in f:
q.add(line.strip())
def queue_save():
#when to trigger save_to.close()?!?!
save_to = open('save_to.txt')
while True:
data = q.get() #this functions blocks if `q` is empty, so how to know
#when to close the file handler `save_to`??
save_to.write(data)
def worker():
#this is daemon process
while True:
#work with file from
get = q.get()
#work with data
q_done.put('processed data')
q.task_done()
q = Queue()
q_done = Queue()
#starts the processes here..
Так что мой вопрос, как знать queue_save()
обработали и сохранены все данные из done_q и закрыть его записи file_handler?
Если 'None' является допустимыми данными, вы должны использовать' END_OF_DATA = object() ', который гарантирует, что' data END_OF_DATA' является истинным тогда и только тогда, когда данные действительно являются дозорным значением. – Bakuriu
'data = q_in.get()' data не может быть None, если в блоке Queue нет блоков, оставшихся в очереди Queue.get(). – nacholibre
@nacholibre q_in.get() может быть None, потому что производитель (queue_add, worker) помещает None. – falsetru