0
我在模块多处理中遇到了一个Python问题。 基本上,我做了一个游戏(用tkinter作为图形),其中我有一个类游戏和几个类(entites),都有一个更新(自我)方法。 所以这是一个有点像:Python - 类与多处理的集成
class Game:
__init__(self, etc...):
self.entities = []
gameloop(self):
for entity in self.entities:
entity.update
class EntityExample:
__init__(self, game, etc...):
self.game = game
update(self):
#stuff
然后我做的:
game = Game()
game.entities.append(EntityExample())
game.gameloop()
所以,我想,对代码进行优化,做这样的事情:
进口多处理
class Game:
__init__(self, etc...):
self.entities = []
self.threads = []
self.lock = multiprocessing.Lock()
gameloop(self):
for entity in self.entities:
entity.update
class EntityExample:
__init__(self, game, etc...):
self.game = game
update(self):
self.game.lock.acquire()
#stuff
self.game.lock.release()
而且在gameloop:
for entity in entities:
t = multiprocessing.Process(target=entity.update)
t.start()
t.join
self.threads.append(t)
的目标是在同一时间,以提高性能上做不同的内核的计算,但它并不可悲工作。 我还要求在IDLE中杀死程序:“程序仍在运行,你想杀死它吗?”。
由于提前,
Talesseed
附: :班级不可采
P.P.S. :我读过创建一个新的Process将文件内的代码复制到一个新的线程,这可能是一个问题,因为我的代码长达1600行。
为什么所有的代码都以连字符开头? –
@BryanOakley糟糕,我会删除那 – Talesseed
'__init__',gameloop或更新已被声明为函数,并且update缺少自己,因此不是EntityExample的一部分 –