如何解决在多重处理过程中使用Timer
我正在尝试创建一个TemporaryProcess,它将在给定的time_alive下运行。为此,我编写了以下课程:
class TemporaryProcess(Process):
"""
It's a normal process which is automatically killed after x seconds
"""
def __init__(self,log_level,time_alive: int):
super().__init__(log_level)
self._time_alive = time_alive
self._timer = Timer(self.time_alive,self.terminate)
def start(self):
super().start()
# Start the timer
log.info(f'A timer is set to kill {self} after {self.time_alive} seconds.')
self._timer.start()
def terminate(self):
super().terminate()
self._timer.cancel()
问题是我无法在构造函数上设置self._timer。如果这样做,则会出现以下异常:
ForkingPickler(file,protocol).dump(obj)
TypeError: can't pickle _thread.lock objects
Traceback (most recent call last):
File "<string>",line 1,in <module>
File "D:\Program Files\Miniconda3\envs\Teste\lib\multiprocessing\spawn.py",line 105,in spawn_main
exitcode = _main(fd)
File "D:\Program Files\Miniconda3\envs\Teste\lib\multiprocessing\spawn.py",line 115,in _main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input
有人知道吗? 最好的问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。