Большой файл не был записан на диск сразу после вызова close ()?

я создаю большой файл с моим скриптом Python (более1GBна самом делес 8 из них). Сразу после создания я должен создать процесс, который будет использовать эти файлы.

Сценарий выглядит так:

# This is more complex function, but it basically does this:
def use_file():
    subprocess.call(['C:\\use_file', 'C:\\foo.txt']);


f = open( 'C:\\foo.txt', 'wb')
for i in 10000:
    f.write( one_MB_chunk)
f.flush()
os.fsync( f.fileno())
f.close()

time.sleep(5) # With this line added it just works fine

t = threading.Thread( target=use_file)
t.start()

Но приложениеuse_file действует какfoo.txt пустой. Происходят странные вещи:

если я выполнюC:\use_file C:\foo.txt в консоли (после завершения скрипта) я получаю правильные результатыесли я выполню вручнуюuse_file() в другой консоли Python я получаю правильные результатыC:\foo.txt виден на диске сразу послеopen() назывался, но остается размер0B до конца сценарияесли я добавлюtime.sleep(5) это только начинает работать как ожидалось (или скорее требуется), я '

мы уже нашли:

os.fsync() но это некажется, работает (результат отuse_file как будтоC:\foo.txt был пуст)С помощьюbuffering=(1

Ответы на вопрос(2)

Ваш ответ на вопрос