Вообще говоря, это зависит от того, как работает ваша обработка. в Python настоящая многопроцессорная обработка выполняется с помощью многопроцессорной библиотеки. С другой стороны, потоки выполняются с помощью библиотеки потоков. Библиотека потоков больше похожа на асинхронную обработку. Это не будет ускорять ваш код, но будет быстрее, если ваш код будет замедлен из-за ожидания.
это то, что вы можете сделать:
import threading
def all_in_one_function(some_file):
result = process_file(some_file)
if result == 'result1':
do this
if result == 'result2':
do that
while True:
if len(my_files) >0:
file_to_be_processed = my_files.pop()
threading.Thread(target = all_in_one_function,args=(file_to_be_processed,)).start()
# you pop the files from your array and process it asyncronously, everytime a file appears it will be popped out of array and processed
Что касается потоков, я советую вам использовать одну функцию. Это означает, что есть функция, которая будет просто выполнять всю обработку. Или создайте класс, который будет выполнять обработку (передает аргументы между функциями) и обрабатывать инициализированный объект.
Я предпочитаю создавать одну функцию со всей обработкой.
Вы не хотите углубляться в передачу аргументов между потоками ...