Сохранение файлов с использованием многопоточности в Python - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть куча файлов, которые я хочу загрузить, обработать и сохранить в другой файл, и так как размер огромен, я использовал многопоточность (в цикле for). Тем не менее, только несколько файлов сохраняются после обработки. Как мне убедиться, что все файлы сохранены?

Фрагменты кода - 1. Основной

for b in range(40):
    with open("/data/b{0}.pickle".format(str(b)), "rb") as f:
        data = pickle.load(f)
    name="hash_table_"+str(b)
    p = multiprocessing.Process(target=generate_hash, args=(data,name))
    processes.append(p)
    p.start()

for process in processes:
    process.join()
  1. Обработка файлов:
def generate_hash(m, name):
    hash_table = {}

    for index, elem in enumerate(m):

       ...
       # some code that updates hash_table
    save_hash_table(hash_table, name)

    return hash_table
  1. Функция сохранения файлов:
def save_hash_table(hash_table, name):
    with open(os.path.join("/data/hashes", name+".pickle"), "wb") as f:
        pickle.dump(hash_table, f)

Ожидаемые файлы - от хэша_таблицы_0 до хэша_таблицы 39 файлов, всего 40 файлов

Фактические файлы - около 20 файлов между hash_table_0 и hash_table_39

...