在下面的代码片段中,.start(( 不执行该方法。永远不会打印 self.listen_items(( 中的第一个打印语句。有一个主文件实例化一个类,以根据需要调度和管理其他类的实例化。此处的代码来自其中一个类。我整个早上都在寻找有关问题的提示。没有找到任何与我的情况有关的东西。有什么想法吗?
self.get_items_process = Process(target=self.listen_items, daemon=True, args=())
self.get_items_process.start()
def listen_items(self):
"""Method replaces listen_to_scheduler_utility() so we can manage exiting the thread on a test restart."""
print("@@@ listen_items(start) @@@")
while not self._restart_pending:
print("@@@ listen_items(loop) @@@")
item: QueueItem = self._scheduler_utility.get_item_from_queues(STR_ITERATION_CONTROLLER, self._iteration)
if item is not None:
print("@@@ listen_items(item) @@@")
self.process_input(queue_item=item)
"">
所以,这是我发现的。首先,start(( 方法一直有效。shell脚本启动应用程序进程,我通常会将stdout和stderr重定向到一个文件。打印语句未显示在该文件中;但是,如果我不重定向输出,看哪,它们被喷出到终端屏幕。我对为什么它们没有出现在重定向中有点模糊,但现在我明白发生了什么。Linux 机器上的多处理执行一个分支主线程,因此分支进程正在写入消息,但父进程是唯一写入日志文件的进程。感谢您的所有评论...