目前,我正在创建一种用于玩俄罗斯方块的遗传算法,我正在破解的俄罗斯方块应用程序使用Pygame作为其主要引擎。
通过启动单个线程在生成单个游戏时运行遗传算法时,它运行良好。一旦运行该类的副本(正在创建多个线程),就会收到“分段错误”错误。
我将如何解决此问题?我以前从未使用过Pygame,但是它非常需要我制定一个线程,每个线程都在其中运行自己的Pygame。
随时询问更多信息,这是我到目前为止要展示的内容。
get_fitness方法
def get_fitness(participant, pool, index):
import tetris
app = tetris.TetrisApp()
app.run()
participant.Fitness = 0
pool[index] = participant
create_children
def create_children(players, evaluation_length, geneset):
participants = [Chromosome([0 for x in range(evaluation_length)], 0) for i in range(players)]
threads = [None] * players
pool = [None] * players
for index, participant in enumerate(participants):
genes = participant.Genes
for gene in range(len(genes)):
genes[gene] = geneset[random.randrange(0, len(geneset))]
participant.Genes = genes
threads[index] = Thread(target=get_fitness, args=(participant, pool, index))
threads[index].start()
for thread in threads:
thread.join()
return pool
Python版本3.5.2