Вы можете использовать многопоточность или многопроцессорность, чтобы ускорить это. Самый простой способ - использовать модуль Threading .
Python Документация: Threading
Простой пример:
import threading
#Define how many threads you want
numberOfThreads = 5
#Create threads
threads = [threading.Thread(target=myFunction, args=(myArguments,)) for _ in range(0, numberOfThreads)]
#Start all threads
for thread in threads:
thread.start()
#Script waits until last thread has finished
for thread in threads:
thread.join()
def myFunction(myArguments):
#Do calculation
Если у вас есть 1k текстовых файлов для обработки, я рекомендую модуль Queue . Очередь содержит путь ко всем файлам, и ваши потоки выбирают один за другим для обработки.
Python Документация: Очередь
Простой пример:
from queue import Queue
#Create Queue object
q = Queue()
#Put item to queue
q.put("/myPath/filename.txt")
#Get and process each item in queue and remove it (so it gets processed only once)
while not q.empty():
myPath = q.get()
Потоки все еще работают на одном ядре процессора. Если скорость все еще не удовлетворена, вам следует использовать многопроцессорность вместо многопоточности.
Я рекомендую модуль concurrent.futures . Это работает почти так же, как примеры потоков.
Python Документация: concurrent.futures