这可能是一个愚蠢的问题但是,有没有办法在使用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>
答案 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上有多处理的工作方式。