用类集成多处理



我在Python中有一个多处理模块的问题。基本上,我正在制作一款游戏(使用tkinter作为图像),其中我有一个类game和几个类(实体),它们都有一个更新(self)方法。这有点像:

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()

所以我试着优化代码,做这样的事情:

import multiprocessing

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()

在gamelloop中:

for entity in entities:
  t = multiprocessing.Process(target=entity.update)
  t.start()
  t.join
  self.threads.append(t)

目标是同时在不同的核心上进行计算以提高性能,但遗憾的是它不起作用。我还要求在IDLE中杀死程序:"程序仍在运行。你想杀了它吗?"

提前感谢,

Talesseed

注::类是不可pickle的

P.P.S.:我读到创建一个新的进程将文件中的代码复制到一个新的线程,这可能是一个问题,因为我的代码有1600行长。

我发现了一些有趣的事情。显然,通过控制台运行它可以使其工作。但是我做了一些测试,多线程版本实际上比单线程版本慢。我不知道:/

编辑:没关系,它现在工作,我的错。

相关内容

  • 没有找到相关文章

最新更新