Я хотел бы запустить процесс mp.Pro, который может записывать в текстовый файл. Но я обнаружил, что в конце скрипта данные, записанные в файл, на самом деле не сохраняются на диск. Я не знаю, что происходит. Вот минимальный рабочий пример:
import os, time, multiprocessing
myfile = open("test.dat", "w")
def main():
proc = multiprocessing.Process(target=writer)
proc.start()
time.sleep(1)
print "Times up! Closing file..."
myfile.flush()
os.fsync(myfile.fileno())
print "Closing %s" % (myfile)
myfile.close()
print "File closed. Have a nice day!"
print "> cat test.dat"
def writer():
data = "0000"
for _ in xrange(5):
print "Writing %s to %s" % (data, myfile)
myfile.write(str(data) + '\n')
# if you comment me, writing to disk works!
# myfile.flush()
# os.fsync(myfile.fileno())
if __name__ == "__main__":
main()
У кого-нибудь есть предложения? Контекст заключается в том, что этот Процесс в конечном итоге будет прослушивать поступающие данные, поэтому он действительно должен выполняться независимо от других событий, происходящих в сценарии.