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:输入不足
有人知道吗? 致意