我有一个遍历游戏树并更新所用节点属性的程序。我如何让一个子进程同时运行以使用新属性更新数据库?
我尝试将它们都作为进程运行,然后将具有更新属性的节点数组传递给将其保存到数据库的进程。我发现的问题是,因为它启动了一个新实例,所以为遍历树而重置了许多变量。
我的代码的简单示例:
walked_nodes = []
class RootTree:
def __init__(self):
self.nodes = []
def train(self):
self.nodes[0].train() # In Node.train() appends self to walked_nodes
def main():
root = RootTree()
for n in range(999999):
root.train()
save_to_db(walked_nodes) # I want this to be a process
# loop should be continued without waiting
# for save_to_db to finish
我如何做到这一点:
def main():
root = RootTree()
root.train()
for n in range(999999):
procs = (Process(target=root.train),
Process(target=save_to_db, args=(walked_nodes,)))
for proc in procs:
proc.start()
for proc in procs:
proc.join()
这将重置settings.py中的root.train()所需的变量。