1

Je ne ferais pas de parallèle avec les fichiers qui sont dans la classe DictionaryTagger. Je passer 5 fichiers dans la classe,Appeler des discussions avec une classe

class DictionaryTagger(object): 
    print_look = threading.Lock() 
    def __init__(self, dictionary_paths): 

     print('Hilo:', threading.current_thread().getName()) 
     files = [open(path, 'r') for path in dictionary_paths] 
     dictionaries = [yaml.load(dict_file) for dict_file in files] 
     map(lambda x: x.close(), files) 
     self.dictionary = {} 
     self.max_key_size = 0 
     for curr_dict in dictionaries: 
     #print(curr_dict) 
     for key in curr_dict: 
      #print(type(curr_dict)) 
      #self.dictionary = 
       if key in self.dictionary: 
        self.dictionary[key].extend(curr_dict[key]) 
       else: 
        self.dictionary[key] = curr_dict[key] 
        self.max_key_size = max(self.max_key_size, len(key)) 
    dictt = DictionaryTagger(['dicts/positive22.yml', 'dicts/negative22.yml', 'dicts/increasers.yml', 'dicts/decreasers.yml', 'dicts/inverter.yml']) 

Quand je passe, j'ai une erreur, car'dictionary_paths' n'est pas défini.

for i in range(3): 
    t = threading.Thread(target=DictionaryTagger) 
    t.demond = True 
    t.start() 

initialisation() manquant 1 requis argument de position:''dictionary_paths''

Répondre

0

Vous recevez cette erreur, car la fonction init vous avez défini comme un argument ('') sans dictionary_paths une valeur par défaut. Vous pouvez résoudre de deux façons différentes:

  1. Ajouter une valeur par défaut à la fonction init

    class DictionaryTagger(object): 
        ... 
        def __init__(self, dictionary_paths=[]): 
        ... 
    
  2. Argumentez lors du démarrage de votre threads:

    default_dictionary_paths = [] 
    for i in range(3): 
        t = threading.Thread(target=DictionaryTagger, args=(default_dictionary_paths)) 
        t.demond = True 
        t.start()