Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取/写入同一文件的两个进程_Python_File Io_Process - Fatal编程技术网

Python 读取/写入同一文件的两个进程

Python 读取/写入同一文件的两个进程,python,file-io,process,Python,File Io,Process,我有一个进程正在读取一个文件(使用file.read()),还有一个进程正在写入同一个文件(file.write())。问题是它不工作-我没有错误,但它们不能同时运行。我已尝试使读写操作无阻塞,然后刷新流,如下所示: fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK) file.write(msg) file.flush() 我完全误解了吗?如何从不同的进程完成对一个文件的写入和读取?看看这个读写锁定类: 在这篇关于锁定和线程的文章中:

我有一个进程正在读取一个文件(使用
file.read()
),还有一个进程正在写入同一个文件(
file.write()
)。问题是它不工作-我没有错误,但它们不能同时运行。我已尝试使读写操作无阻塞,然后刷新流,如下所示:

fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()
我完全误解了吗?如何从不同的进程完成对一个文件的写入和读取?

看看这个读写锁定类:

在这篇关于锁定和线程的文章中:


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

      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)
      

      这对我来说很好。

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

      实例化管道,该管道返回读取器和写入器对象。然后,一个进程使用writer写入管道,另一个进程使用reader读取管道


      Python os.pipe():

      你肯定说得对。我最初想到了这种方法,但后来改变了主意,选择了文件I/o,一旦我遇到了问题并开始努力解决,我就有点想解决它了:P。仍然感谢你的回答。请注意,os.o_NONBLOCK在Windows下不可用。