['   \n  \n [\'ਕਲਾਸ ਫਾਇਲਲੋਡਰਃ \\n ਡਿਫ _ _ ਇਨਿਟ _ (ਸੈਲਫ, ਡਾਟਾ, ਟੋਕਨਾਈਜ਼ਰ, ctx _ ਲੇਨ, ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ = 5, ਨੰਮ _ ਥ੍ਰੈਡਸ = 4): \\n self.data = ਡਾਟਾ \\n self.tokenizer = ਟੋਕਨਾਈਜ਼ਰ \\nself.ctx_len = ctx _ len\\n self.preload_steps = ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ\\n self.executor = ਥ੍ਰੈਡਪੂਲਐਕਸਕਿਊਟਰ (ਮੈਕਸ _ ਵਰਕਰਜ਼ = ਨੰਮ _ ਥ੍ਰੈਡਸ) \\n self.queue =ਕਤਾਰ (ਮੈਕਸਸਾਈਜ਼ = ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ) \\n self.loading_finished = ਈਵੈਂਟ () \\n ਫਿਊਚਰ _ ਟਾਸਕ = [self.executor.submit (self.load_next_file) ਲਈਜਿਵੇਂ ਕਿ ਮੁਕੰਮਲ (ਭਵਿੱਖ ਦੇ ਕੰਮਾਂ) ਵਿੱਚ ਪੂਰਾ ਕਰਨ ਲਈ ਰੇਂਜ (ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ)] \\n: \\n ਜਾਰੀ ਰੱਖੋ \\n self.monitor_thread = ਥਰਿੱਡ (ਟੀਚਾ = self.monitor_queue,ਡੈਮਨ = ਸੱਚ) \\n self.monitor_thread.start () \\n\\n ਡਿਫ ਮਾਨੀਟਰ _ ਕਿਊ (ਸੈਲਫ): \\n ਜਦੋਂ ਕਿ self.loading_finished.is_set () ਨਹੀਂ ਹੈਃ \\n ਜੇਕਰ self.queue.qsize () <self.preload_steps/2: \\n self.executor.submit (self.load_next_file) \\n\\n ਡਿਫ ਲੋਡ _ ਨੈਕਸਟ _ ਫਾਈਲ (ਸੈਲਫ): \\n ਫਾਈਲ _ ਪਾਥ = self.random_file (self.data) \\n ਡਾਇਕਸ =self.load_and_tokenize (ਫਾਈਲ _ ਪਾਥ) \\n self.queue.put (ਡਾਇਕਸ) \\n\\n ਡਿਫ ਰੈਂਡਮ _ ਫਾਈਲ (ਸੈਲਫ, ਫੋਲਡਰ _ ਪਾਥ): \\n ਫਾਇਲਾਂ = glob.glob (os.path.join (ਫੋਲਡਰ _ ਪਾਥ, * */*),ਜਦੋਂ ਕਿ ਫਾਈਲਾਂਃ \\n ਫਾਈਲ _ ਪਾਥ = random.choice (ਫਾਈਲਾਂ) \\n ਜੇਕਰ os.path.isfile (ਫਾਈਲ _ ਪਾਥ) ਅਤੇ os.path.getsize (ਫਾਈਲ _ ਪਾਥ)> 0: \\n ਰਿਟਰਨਫਾਈਲ _ ਪਾਥ\\ਨ ਰਿਟਰਨ ਕੋਈ ਨਹੀਂ \\n\\n ਡਿਫ ਲੋਡ _ ਅਤੇ _ ਟੋਕਨਾਈਜ਼ (ਸੈਲਫ, ਫਾਈਲ _ ਪਾਥ): \\n ਜੇਕਰ ਫਾਈਲ _ ਪਾਥ ਨਹੀਂ ਹੈਃ \\n ਰਿਟਰਨ ਕੋਈ ਨਹੀਂ \\n\\n ਖੁੱਲ੍ਹੇ ਨਾਲ (ਫਾਈਲ _ ਪਾਥ, "r", ਇੰਕੋਡਿੰਗ = "utf-8")ਫਾਇਲ ਦੇ ਰੂਪ ਵਿੱਚਃ \\n ਸਮੱਗਰੀ = file.read () \\n\\n ਟੋਕਨਾਈਜ਼ਡ = self.tokenizer.encode (ਸਮੱਗਰੀ, add _ sos = ਸੱਚਾ, add _ eos = ਸੱਚਾ) \\n num _ pads = ਵੱਧ ਤੋਂ ਵੱਧ (0, self.ctx_len + 1 -ਲੇਨ (ਟੋਕਨਾਈਜ਼ਡ)) \\n\\n ਡੀਕਸ = [2] * num _ pads + ਟੋਕਨਾਈਜ਼ਡ \\n ਰਿਟਰਨ ਡੀਕਸ \\n\\n ਡੈਫ ਗੇਟ _ ਨੈਕਸਟ (ਸੈਲਫ): \\n ਜੇਕਰ ਨਹੀਂ ਤਾਂ self.queue.empty (): \\n ਰਿਟਰਨ self.queue.get () \\nਹੋਰਃ \\n ਰਿਟਰਨ ਕੋਈ ਨਹੀਂ \\n\\nDavai ਉਲੂਚਸ਼ੀਮ-ਡੋਬੇਵੀਮ ਇੰਡੀਕੈਸਟੀਯੂਅਸ ਸੰਸਥਾਗਤ ਮੁੱਦੇ ਫੈਲੋਵਜ਼ ਸਮੱਗਰੀ tqdm, a γλαVNO-ισπραVIM βαγι \'] ', 'ਕਲਾਸ ਫਾਇਲਲੋਡਰਃ ਡਿਫ _ _ init _ (ਸੈਲਫ, ਡਾਟਾ, ਟੋਕਨਾਈਜ਼ਰ, ctx _ len, ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ = 5, ਨੰਮ _ ਥ੍ਰੈਡਸ = 4): self.data = ਡਾਟਾ self.tokenizer = ਟੋਕਨਾਈਜ਼ਰself.ctx_len = ctx _ len self.preload_steps = ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ self.executor = ਥ੍ਰੈਡਪੂਲਐਕਸਕਿਊਟਰ (ਮੈਕਸ _ ਵਰਕਰਜ਼ = ਨੰਮ _ ਥ੍ਰੈਡਸ) self.queue =ਕਤਾਰ (ਮੈਕਸਸਾਈਜ਼ = ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ) self.loading_finished = ਈਵੈਂਟ () ਫਿਊਚਰ _ ਟਾਸਕ = [self.executor.submit (self.load_next_file) ਫਾਰ ਰੇਂਜ (ਪ੍ਰੀਲੋਡ _ ਸਟੈਪਸ)]ਜਿਵੇਂ ਕਿ ਮੁਕੰਮਲ (ਭਵਿੱਖ ਦੇ ਕੰਮਾਂ) ਵਿੱਚ ਪੂਰਾ ਕਰਨ ਲਈਃ ਜਾਰੀ ਰੱਖੋ self.monitor_thread = ਥਰਿੱਡ (ਟੀਚਾ = self.monitor_queue, ਡੈਮਨ = ਸੱਚ) self.monitor_thread.start ()ਡਿਫ ਮਾਨੀਟਰ _ ਕਿਊ (ਸੈਲਫ): ਜਦੋਂ ਕਿ self.loading_finished.is_set () ਨਹੀਂ ਹੈਃ ਜੇਕਰ self.queue.qsize () <self.preload_steps/2:self.executor.submit (self.load_next_file) ਡਿਫ ਲੋਡ _ ਨੈਕਸਟ _ ਫਾਈਲ (ਸੈਲਫ): ਫਾਈਲ _ ਪਾਥ = self.random_file (self.data) ਡਿਕਸ = self.load_and_tokenize (ਫਾਈਲ _ ਪਾਥ)self.queue.put (ਡਾਇਕਸ) ਡਿਫ ਰੈਂਡਮ _ ਫਾਈਲ (ਸੈਲਫ, ਫੋਲਡਰ _ ਪਾਥ): ਫਾਇਲਾਂ = glob.glob (os.path.join (ਫੋਲਡਰ _ ਪਾਥ, * */*), ਰਿਕਰਸਵ = ਟਰੂ) ਜਦੋਂ ਕਿ ਫਾਈਲਾਂਃ ਫਾਈਲ _ ਪਾਥ =random.choice (ਫਾਇਲਾਂ) ਜੇਕਰ os.path.isfile (ਫਾਈਲ _ ਪਾਥ) ਅਤੇ os.path.getsize (ਫਾਈਲ _ ਪਾਥ)> 0: ਫਾਇਲ _ ਪਾਥ ਵਾਪਸ ਕਰੋ ਕੋਈ ਵੀ ਡਿਫ ਲੋਡ _ ਅਤੇ _ ਟੋਕਨਾਈਜ਼ (ਸਵੈ,ਫਾਈਲ _ ਪਾਥ): ਜੇ ਫਾਈਲ _ ਪਾਥ ਨਹੀਂ ਹੈਃ ਫਾਈਲ ਦੇ ਰੂਪ ਵਿੱਚ ਓਪਨ (ਫਾਈਲ _ ਪਾਥ, "r", ਇੰਕੋਡਿੰਗ = "utf-8") ਨਾਲ ਕੋਈ ਵੀ ਵਾਪਸ ਨਹੀਂ ਕਰਦਾਃ ਸਮੱਗਰੀ = file.read () ਟੋਕਨਾਈਜ਼ਡ =self.tokenizer.encode (ਸਮੱਗਰੀ, add _ sos = ਸੱਚਾ, add _ eos = ਸੱਚਾ) num _ pads = ਵੱਧ ਤੋਂ ਵੱਧ (0, self.ctx_len + 1-ਲੇਨ (ਟੋਕਨਾਈਜ਼ਡ)) dix = [2] * num _ pads + ਟੋਕਨਾਈਜ਼ਡਜੇਕਰ ਨਹੀਂ ਤਾਂ self.queue.empty (): self.queue.get () ਹੋਰਃ ਕੋਈ ਨਹੀਂ ਵਾਪਸ ਕਰੋਇਸ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਇ \n ']