【发布时间】:2021-06-16 11:59:07
【问题描述】:
我有一个程序,其中有一个正在运行的线程正在侦听进入事件处理程序的消息。
根据输入,它需要读取特定文件,但不应同时读取。因此,例如,如果我传入 file1 进行读取。它开始读取该文件,我将 reading_status 设置为 True。
读取需要 1 分钟,在这段时间内,如果请求读取 file2,那么它应该检查之前的读取是 True 还是 False。如果 reading_status 是 True 那么它应该退出并且不执行 File2 的读取。
from file_reader import FileReader
def init(cls):
cls.file_manager = FileReader()
def read_file(cls, file_name):
if cls.file_manager.is_reading:
logging.info('Reading is already active')
return
# Code for start reading
cls.file_manager.reading_op(file_name)
class FileReader:
_file_name = None
_status = None
_reading_status = None
def __init__(self, file_name):
self.file_name = file_name
def reading_op(self, file_name):
# Code for file read
self._reading_status = True
def is_reading(self):
return self._reading_status
我的方法正确吗?如果在要求读取 file2 时仍在读取 file1,我如何获取它的状态?
【问题讨论】:
-
你的问题是什么?确切地。请堆栈跟踪。如果您想要求进行代码审查,那么Code Review SO 论坛可能更适合此类问题。
-
我不知道如何知道当 file2 必须开始读取时,之前的文件读取操作是否仍在运行或已完成。
-
您可能想阅读Semaphores
标签: python python-3.x multithreading file