おそらくボトルネックは I/O であるため、マルチスレッドは役に立ちません。とにかく、試すのは簡単です: 次のコードは、指定された文字列関数を各行に適用し、指定されたパスに新しいファイルを書き込むことにより、現在のディレクトリにあるすべてのファイルを、ファイルごとに 1 つのスレッドで処理します。
from threading import Thread
from os import listdir
from os.path import basename, join, isfile
class FileChanger(Thread):
def __init__(self, sourcefilename, rowfunc, tgpath):
Thread.__init__(self)
self.rowfunc = rowfunc
self.sfname = sourcefilename
self.tgpath = tgpath
def run(self):
tgf = open(join(self.tgpath, basename(self.sfname)), 'w')
for r in open(self.sfname):
tgf.write(self.rowfunc(r))
tgf.close()
# main #
workers = [FileChanger(f, str.upper, '/tmp/tg') \
for f in listdir('.') if isfile(f)]
for w in workers:
w.start()
for w in workers:
w.join()