Python迭代太快了?

时间:2011-08-02 22:15:52

标签: python

我对python有一个非常烦人的问题。 基本上,我正在为Blender 3D GE创建一个动态多人游戏系统。 由于问题的性质,它不是Blender问题。 这就是我在做的事情:

  1. 循环访问客户端列表以获取每个人的数据以获取DATA
  2. 循环访问该客户端数据中的另一个字典以获取TYPE
  3. 循环通过该dict(TYPE)获取ID
  4. 以下是数据示例:

        ['a1a1a4', 'NAME13' {'position': {7316: [[-0.23014163970947266, 7.419361591339111, -1.518202424049774], 'Sphere', 'Cube']}}]
        ['a1a1a4', 'NAME16' {'position': {5982: [[-0.23014163970947266, 4.099361419677734, -1.518202424049774], 'Sphere', 'Cube']}}]
        ['a1a1a4', 'NAME90' {'position': {7858: [[-0.23014163970947266, 4.659361362457275, -1.518202424049774], 'Sphere', 'Cube']}}]
    

    这是处理代码

        for set in data: # for each packaged set of data
            print(set)
            client_status = set[0]
            client_id = set[1]
            if client_status == "a1a1a4":
    
                client_dic = set[2]
                if client_id == gd["player_name"]:
                    continue
    
                if client_id not in gd["registered_client_objects"]:
                    gd["registered_client_objects"][client_id] = {}
                    continue    
                #for each type in the client dic    
                for type in [i for i in client_dic if i == self.plugin_type]:
    
                    #if relevant to current plugin
                    if type in  gd["registered_client_objects"][client_id]:
    
                        #for the id of each plugin of this type sent from the client
                        for id in client_dic[type]:
    
                            #if the sender plugin isn't registered:
                            if not id in gd["registered_client_objects"][client_id][type]:
                                #creates a plugin listener for that sender                          
                                create_plugin(client_dic[type],id,type,client_id)   
                            else:
                                use_data(client_dic[type],id,client_id,type)
    
                    else:
                        gd["registered_client_objects"][client_id][type] = {}
            elif client_status == "a1a1a5":
                remove_plugin(client_id)       
    

    最终结果是我使用ID来匹配某些设置并检索相应的项目以应用一些数据。 重要的部分是处理数据的“使用数据” 这适用于两个客户端,但任何更多,游戏对象开始抖动。我认为这意味着我将数据(位置)分配给它们太快了。 该脚本每秒运行60次,但由于内部的迭代,我可以假设迭代是问题,因为我没有收到延迟。因此: 我怎样才能减慢迭代速度?

0 个答案:

没有答案