我有两个功能,A和B:
def A():
if (exists("temp/my_file.txt"):
my_file = open("temp/my_file.txt", "r")
# Do stuff
my_file.close()
remove("temp/my_file.txt")
def B():
my_file = open("temp/my_file.txt", "w")
# Do other stuff
my_file.close()
这些函数被编写为单独的脚本并独立运行。B()
创建A()
应该读取然后删除的文件。但是,我遇到了各种各样的问题(例如错误2)。我试过使用posixfile
,它在Windows中不起作用,Lockfile
,这会导致导入错误,我试过在B()
中使用文件时将其写入临时目录,然后在A()
读取和删除文件时将其移回。你知道吗
我能了解一下发生了什么事,以及如何解决这个问题吗?你知道吗
虽然一个线程很可能读取另一个线程正在写入的文件,但两个线程都不可能删除该文件而不导致错误。你知道吗
例如,如果读取线程删除了该文件,则写入操作将失败,因为该文件不再存在。这听起来像是一种情况,您最好使用一个简单的消息队列,最简单的可能是redis
lpush/rpop
实际上,它比文件io简单得多。你知道吗如果你对redis这么做
作者变成了
rpop(和lpop)将等待数据可用。如果你想停止循环,就输入一些特殊值作为信号
相关问题 更多 >
编程相关推荐