我正在编写一个基于MPI的应用程序(但MPI在我的问题中无关紧要,我只提到它是为了揭示基本原理),在某些情况下,当工作项少于进程时,我需要创建一个新的通信器排除无关的进程.最后,必须通过有工作的流程(并且只有他们)来释放新的沟通者.
一个巧妙的方法是写:
with filter_comm(comm, nworkitems) as newcomm:
... do work with communicator newcomm...
Run Code Online (Sandbox Code Playgroud)
正在由有工作的进程执行的正文.
在上下文管理器中有没有办法避免执行正文?我理解上下文管理器的设计是为了避免隐藏控制流,但我想知道是否有可能规避控制流,因为在我的情况下,我认为为了清晰起见,这是合理的.