我正在创建一个应用程序,它必须执行一个耗时太长的函数(让它称之为slowfunc()
),这是一个问题,因为我的应用程序正在使用实时视频源。通过每帧运行此功能,帧速率受到严重影响。
有没有办法在后台运行slowfunc()
而不使用线程?我不一定需要它来运行每一帧,但每次完成时,我都想检查输出。我现在唯一能想到的就是将slowfunc()
分成几个“迷你函数”,每个函数大约需要相同的时间,然后每帧运行一个微型函数。但是,slowfunc()
是一个相对复杂的功能,我觉得应该(希望是)一种简单的方法。
答案 0 :(得分:0)
你要求执行死刑。这样做的两种方法是 - : a)多线程 - :创建另一个在后台运行的线程。 b)多处理 - :创建另一个进程。通过共享内存模型获取该功能所需的所有输入。使用原始进程(父进程)创建同步机制。执行此功能。
通常优先使用第一个。执行速度更快。
第二个保证如果函数崩溃,你的父进程仍然运行。虽然,这有点无关紧要,因为,为什么你希望你的孩子(功能)崩溃。这需要更多的记忆。
答案 1 :(得分:0)
在线程中运行它并在计算完成后,使线程休眠直到另一个计算准备好运行。这样,每次都不会遇到线程的初始化。