2017-07-05 61 views
0

我有一个main.py文件。该文件使用multiprocessing来执行另一个名为function.py的文件。第二个使用threading将函数f应用于numpy array的每个组件。 function.py读取(仅在所有进程中一次)文件file.txt,读取f的一些数据,然后清除它(写入空文件)。我是否需要锁定文件file.txt,function.py以避免出现N进程的问题,从main.py创建function.py并在file.txt中读写?如果是这样,该怎么办?使用多处理和多线程锁定文件 - Python

最后我得到它与semaphore

回答

0

是的,在某些方面它必须被锁定。 只要他们只读它,几个进程读取文件就没有问题。一旦写入文件,您必须确保读取和写入按照所需的顺序进行。

锁定可以通过使用原子创建的锁定文件来完成。在进程成功创建锁文件后,它可以访问文本文件。该过程完成文本文件后,它将删除锁定文件。这确保了在给定的时间只有一个进程可以访问文本文件。

+0

您还可以同步程序中的进程,以确保一次只有一个进程访问编辑文件的代码。 – Andreas