Python 在多处理过程中使用计时器
我试图创建一个临时进程,它将在给定的时间内运行。为此,我编写了以下类:Python 在多处理过程中使用计时器,python,timer,multiprocessing,Python,Timer,Multiprocessing,我试图创建一个临时进程,它将在给定的时间内运行。为此,我编写了以下类: 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_l
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.\u计时器。如果我这样做,我会得到以下例外:
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
ForkingPickler(文件、协议).dump(obj)
TypeError:无法pickle\u thread.lock对象
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“D:\Program Files\Miniconda3\envs\Teste\lib\multiprocessing\spawn.py”,第105行,在spawn\u main中
出口代码=_主(fd)
文件“D:\Program Files\Miniconda3\envs\Teste\lib\multiprocessing\spawn.py”,第115行,在_main中
self=reduce.pickle.load(从父级)
EOFError:输入不足
有人知道吗?
致意