如何在主循环中高效调用Player类所有实例的指定方法
优化实现方案
1. 批量存储实例
不要单独定义player1到player100的单个变量,将所有Player实例统一存入列表,既减少冗余代码,也方便后续批量操作:
如果实例参数有规律,直接用列表推导式创建:
# 示例:第N个实例的参数为(N,N,N,N,N,N) players = [Player(i, i, i, i, i, i) for i in range(1, 101)]
如果实例参数无统一规律,先整理所有参数列表再批量生成:
# 按顺序存入所有实例的初始化参数 player_init_params = [ (1,1,1,1,1,1), (2,2,2,2,2,2), # 其余98组参数 (1,1,1,1,1,1) ] players = [Player(*params) for params in player_init_params]
2. 主循环批量调用方法
直接遍历存储实例的列表调用方法即可,原有的上百行调用代码可以精简为几行,没有冗余且维护成本极低:
while True: for player in players: player.function1() player.function2()
额外性能优化建议
- 若
function1和function2的逻辑关联度高,可以合并为一个方法,减少方法调用的开销 - 若方法内部是IO密集逻辑,可以搭配协程/多线程提升并发效率;若为计算密集逻辑,可以用多进程规避Python GIL限制
- 后续需要新增/删除Player实例时,只需要操作
players列表即可,不需要修改主循环的逻辑
内容的提问来源于stack exchange,提问作者Akagami Shanks
相关产品推荐
相关产品推荐

