【问题标题】:Two processes reading/writing to the same file Python两个进程读取/写入同一个文件 Python
【发布时间】:2011-03-13 18:46:37
【问题描述】:

我有一个正在读取文件的进程(使用file.read())和一个正在写入同一文件的进程(file.write())。问题是它不起作用 - 我没有收到任何错误,但它们不能同时运行。我试过让读写操作不阻塞,然后刷新流,如下:

fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()

我完全误解了吗?不同进程应该如何完成对一个文件的读写?

【问题讨论】:

    标签: python file-io process


    【解决方案1】:

    另一个很好的方法是使用管道

    This example 实例化一个管道,该管道返回一个读取器和一个写入器对象。然后一个进程使用 writer 向管道写入数据,而另一个进程使用 reader 从管道中读取数据。

    Python os.pipe(): https://docs.python.org/3/library/os.html#os.pipe

    【讨论】:

      【解决方案2】:

      test1.py

      import os
      f = open('txt.txt', 'a', os.O_NONBLOCK)
      while 1:
              f.write('asd')
              f.flush()
      

      test2.py

      import os
      f = open('txt.txt', 'r', os.O_NONBLOCK)
      while 1:
          print f.read(3)
      

      这对我来说很好。

      【讨论】:

      • 请注意 os.O_NONBLOCK 在 Windows 下不可用。
      【解决方案3】:
      【解决方案4】:

      是否有理由使用公用文件?使用sockets 可能更容易进行进程间通信。

      【讨论】:

      • 你当然明白了。我最初想到了这种方法,但改变了主意,转而使用文件 i/o,一旦我遇到问题并开始努力解决它,我就到了想要解决它的地步:P。仍然感谢您的回答。
      猜你喜欢
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2013-03-01
      • 2012-12-25
      相关资源
      最近更新 更多