Сделать имя файла уникальным для каждого подпроцесса:
def process_files (file, id):
res_path = r'd:\results'
for line in file:
matches = set(regex.findall(line))
for match in matches:
filename = "{}_{}.csv".format(match, id)
res_file = os.path.join(res_path, filename)
with open(res_file, 'a') as rf:
rf.write(line)
def main():
p = multiprocessing.Pool()
for id, file in enumerate(glob.iglob(r'D:\csv_files\**\*.csv', recursive=True)):
p.apply_async(process, [file, id])
тогда вам нужно будет добавить код для объединения различных файлов "_.csv" в один файл ".csv".
Одновременная запись в один и тот же файл - это то, чего вы хотите избежать - либо у вас нет блокировок файлов, и вы в конечном итоге получаете поврежденные данные, либо у вас есть блокировки файлов, и тогда это замедлит процесс, который повредит весь процесс. точка распараллеливания.