【发布时间】:2021-10-26 14:21:57
【问题描述】:
我正在尝试在使用 Jetpack 4.5 闪存的 Jetson NANO 设备上运行一个简单的多处理系统。 我正在做我通常在电脑上做的事情,所以我有一个主脚本,launcher.py
launcher.py
import multiprocessing as mp
from multiprocessing import set_start_method, Queue, Event
from camera_reader import Camera_Reader_Initializer
def main():
set_start_method("spawn")
cam_read = mp.Process(target=Camera_Reader_Initializer, args=())
cam_read.daemon = True
cam_read.start()
if __name__ == "__main__":
main()
应该启动脚本camera.py(实际上,连同其他几个脚本) camera.py:
camera.py
print("check 00")
def Camera_Reader_Initializer():
print('check 01')
cam_read = Camera_Reader()
cam_read.run()
class Camera_Reader():
def __init__(self):
print('check 02)
self.source = "/dev/video0"
def run(self):
print('check 03')
input = jetson.utils.videoSource(self.source)
output = jetson.utils.videoOutput("")
while output.IsStreaming():
image = input.Capture(format='rgb8')
output.Render(image)
output.SetStatus(f"Video Viewer | {image.width:d}x{image.height:d} | {output.GetFrameRate():.1f} FPS")
但是,在运行 launcher.py 时,我得到的唯一输出是:
check 00
所以,基本上 cam_read 对象没有被创建或运行。我做错了吗?
【问题讨论】:
-
这应该在任何计算机上“失败”。启动进程后主进程会立即退出,主进程会将
SIGTERM发送给任何标有daemon的子进程。你所拥有的实际上是一场比赛,看看新流程可以在terminate()'d 之前打印出什么 -
该死,我太傻了! :(你说得对,主进程中应该有另一部分,这样一切都会立即结束。我现在正在根据我的需要调整现有脚本,但最终删除了太多东西。非常感谢!
标签: python multiprocessing nvidia-jetson nvidia-jetson-nano