问题描述
我正在尝试创建一个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 (将#修改为@)