Я хочу использовать Torch DataLoader и использовать шаблон производитель/потребитель, но он застреваетPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я хочу использовать Torch DataLoader и использовать шаблон производитель/потребитель, но он застревает

Сообщение Anonymous »

Я хочу изменить факел DataLoader и использовать внутри него шаблон потребителя/производителя.
У меня есть очередь, в которую один поток помещает в нее файлы, и эти элементы потребляются с помощью __getitem__ по фреймворку.
вот мой код:

Код: Выделить всё

import glob
import time
from torch.utils.data import DataLoader, Dataset
import threading
import queue

class CustomDataset(Dataset):
size = 25
def __init__(self):
self.voices_path = "/home/hatef/mmm/data/voice/"
file_list = glob.glob(self.voices_path + "*")
self.data = []
for f in file_list:
self.data.append(f)
self.q = queue.Queue(CustomDataset.size)

def fill_queue(self):
dataz = self.data
it = 0
while it < len(dataz):
path = dataz[it]
if not self.q.full():
with open(path,"rb") as f:
self.q.put(f.read())
it += 1
else:
print("queue size: " + str(self.q.qsize()))
time.sleep(2)

def __len__(self):
return len(self.data)

def __getitem__(self, _):
print("before get item")
item = self.q.get()
self.q.task_done()
return [item, 1]

params = {'batch_size': 16,
'shuffle': True,
'num_workers': 4}

epoch = 100

dataset = CustomDataset()
training_generator = DataLoader(dataset, **params)

producer = threading.Thread(target=dataset.fill_queue, daemon=True)
producer.start()

start_time = time.time()

for i in range(epoch):
for f in training_generator:
print(f)
print("............")
print(f"**********************************run epoch***************************************: {i}")
# time.sleep(10)
end_time = time.time()

execution_time = end_time - start_time

print(f"Execution time: {execution_time} seconds")

Код: Выделить всё

__getitem__
никогда не прогрессирует в моем коде. в чем проблема?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -it-stucks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»