我有以下算法:
我想并行化进程,因为每一行进程都是独立的
我的代码:
def update_grid_row(self, grid, new_neighbours_grid, y):
grid_row = np.zeros(GRID_WIDTH + 2)
for x in range(0, GRID_WIDTH):
xy_status = self.get_status_grid(x, y, grid, new_neighbours_grid)
grid_row[x + 1] = xy_status
return grid_row
def get_status_grid(self, x, y, new_grid, new_neighbours_grid):
current_status = new_grid[x + 1][y + 1]
living_neighbours = new_neighbours_grid[x][y]
if living_neighbours < 2 or living_neighbours > 3:
return int(0)
elif current_status == 0 and living_neighbours == 3:
return int(1)
else:
return current_status
def run
original_grid = self.grid
new_grid = original_grid
new_neighbours_grid = self.get_neighbours_grid(new_grid)
for y in range(0, GRID_HEIGHT):
grid_row = self.update_grid_row(original_grid, new_neighbours_grid, y)
new_grid[:, y + 1] = grid_row.T
self.grid = new_grid
正如注释中指出的那样,多处理可能没有用处,但请注意,邻居计数对应于将网格与数组卷积
因此,使用
scipy.signal.convolve2d
将为您购买10到100的因子相关问题 更多 >
编程相关推荐