Multiprocessing some_process.start()不执行该功能

问题描述 投票:0回答:1

在下面的代码段中,.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)

“”“

python multiprocessing
1个回答
0
投票

所以,这就是我所发现的。首先,start()方法一直有效。 Shell脚本启动应用程序进程,我通常将stdout和stderr重定向到文件。打印语句未显示在该文件中。但是,如果我没有重定向输出,哪怕它们被喷出到终端屏幕了。对于它们为什么不出现在重定向中,我有些模糊,但是我现在知道发生了什么。在Linux机器上的多处理功能执行了一个fork主线程,因此分叉的进程正在写入消息,而父进程是唯一写入日志文件的进程。感谢您的所有评论...

热门问题
推荐问题
最新问题