Closed satouriko closed 2 years ago
很尴尬就是,#46 其实并没有真正解决 #17,但是让问题显著变少了。以前会出来一大堆空目录,现在每次录播只会多出来一个。原因是我在初始化 BiliLiveRecorder 和 BiliDanmuRecorder 的时候挂载了 MainRunner 中 self.bl 的状态(上次检查的时间),这样子进程和父进程检查的时间相差变小了。并不是像我想象的那样,子进程对 self 中状态的修改能直接反馈给父进程。https://stackoverflow.com/a/40873071
BiliLiveRecorder
BiliDanmuRecorder
MainRunner
self.bl
class BaseClass: def __init__(self): self.__live_status = False @property def live_status(self) -> bool: return self.__live_status @live_status.setter def live_status(self, status: bool): self.__live_status = status class SubClass(BaseClass): def __init__(self): super().__init__() x = SubClass() x.__live_status = True # False print(x.live_status) x.live_status = True # True print(x.live_status)
然后实际上,在这个 Pr 之前, https://github.com/AsaChiri/DDRecorder/blob/1ca39f94ea46c3eed12bad730f38862d19c31764/BiliLive.py#L16 甚至是没有用的,因为它并没有“check_live_status”,只是更新了“room_info”,“room_info”在第一次访问“live_status”属性之前又没有用到。 https://github.com/AsaChiri/DDRecorder/blob/1ca39f94ea46c3eed12bad730f38862d19c31764/BaseLive.py#L59-L67
经过了测试,效果很好!
很尴尬就是,#46 其实并没有真正解决 #17,但是让问题显著变少了。以前会出来一大堆空目录,现在每次录播只会多出来一个。原因是我在初始化
BiliLiveRecorder
和BiliDanmuRecorder
的时候挂载了MainRunner
中self.bl
的状态(上次检查的时间),这样子进程和父进程检查的时间相差变小了。并不是像我想象的那样,子进程对 self 中状态的修改能直接反馈给父进程。https://stackoverflow.com/a/4087307147 也没有解决 #17,但是思路应该是对的。问题是不能直接通过给派生类属性赋值操作基类的属性(见下面示例代码),这个 Pr 提供了修复。
然后实际上,在这个 Pr 之前, https://github.com/AsaChiri/DDRecorder/blob/1ca39f94ea46c3eed12bad730f38862d19c31764/BiliLive.py#L16 甚至是没有用的,因为它并没有“check_live_status”,只是更新了“room_info”,“room_info”在第一次访问“live_status”属性之前又没有用到。 https://github.com/AsaChiri/DDRecorder/blob/1ca39f94ea46c3eed12bad730f38862d19c31764/BaseLive.py#L59-L67