子进程的命名

时间:2017-01-31 09:39:02

标签: python multiprocessing ps

这可能是一个愚蠢的问题但是,有没有办法在使用python多处理模块时编辑与衍生子流程相关联的流程名称?

此目的的用途是能够使用命令行实用程序class Node(object): def populateChildren(self,player,board): print("start conditions: ",player,board) newBoard=board start=randomStart(board, player) if self.depth>-1: ##[base case] for i in board[start][4]: newBoard[i][3]=(board[start][3]-board[i][3]) newBoard[start][3]=1 self.children.append(Node((self.depth)-1,-self.player,newBoard,self.treeVal(newBoard))) else: print("RECURSION END") def treeVal(self,board): if checkWin(board)==True: return maxsize*self.player elif checkWin: return maxsize*-self.player return 0 def __init__(self,depth,player,newBoard,value=0): self.depth=depth self.player=player self.value=value self.children=[] self.populateChildren(player,newBoard) def minMax(node,depth,player): if depth==0 or abs(node.value)==maxsize: return node.value bestValue=maxsize*-playerNum for i in range(0,5): child=node.children[i] value=MinMax(child,depth-1,-playerNum) if abs(maxsize*playerNum-value)<abs(maxsize*playerNum-bestValue): bestValue=value return bestValue def AIMove(Node,sectors): newBoard=sectors currentPlayer=-1 depth=10 looks=0 while looks<6: Node.player=-1 node=Node(depth,currentPlayer,newBoard,value=0) bestChoice=-100 bestValue=currentPlayer*maxsize for i in range(len(node.children)): child=node.children[i] value=MinMax(child,depth,currentPlayer) if (abs(currentPlayer*maxsize-value)<=abs(currentPlayer*maxsize-bestValue)): bestValue=value bestChoice=i bestChoice+=1 looks+=1 top来检查哪些子进程仍在运行且可能已挂起。例如。假设我有一个名为MyScript.py的脚本,该脚本启动n个子进程,然后使用top来查看进程:

ps

而不仅仅是

MyScript.py
MyScript.py <tag1>
Myscript.py <tag2>
...
Myscript.py <tagn>

2 个答案:

答案 0 :(得分:0)

没有。 Python无法控制出现在“top”命令输出中的进程名称。这是由操作系统管理的。

如果您正在使用multiprocessing.Process类,则该对象的PID属性中提供了进程ID,因此您可以将其打印出来并使用top的输出进行交叉引用。或者您可以使用subprocess模块调用您的程序,并过滤输出以仅为您提供相关输出。

答案 1 :(得分:0)

可以做什么(虽然看起来有些笨拙)是通过subprocess开始你的流程,如下所示:

import subprocess
subprocess.call(["python", "myscript.py", "-tag", "tag1"])

然后,在查看__main__参数时,您需要调整-tag分支到正确的函数。这可能看起来有点过分,因为在Linux上,子进程只是一个fork()并且不会重新解释python文件等,但在Windows上有多处理的工作方式。