Pythondict形式で数千行の大きなファイルがたくさんあります。json.dumpsを使用してそれらをjson文字列に変換しています。
import json
import ast
mydict = open('input', 'r')
output = open('output.json', "a")
for line in mydict:
line = ast.literal_eval(line)
line = json.dumps(line)
output.write(line)
output.write("\n")
これは問題なく機能しますが、シングルスレッド方式で機能します。システムの残りのコアを利用して処理を高速化する簡単な方法はありますか?
編集:
私がここでマルチプロセッシングライブラリから始めた提案に基づいて:
import os
import json
import ast
from multiprocessing import Process, Pool
mydict = open('twosec.in', 'r')
def info(title):
print title
print 'module name:', __name__
print 'parent process: ', os.getppid()
print 'process id:', os.getpid()
def converter(name):
info('converter function')
output = open('twosec.out', "a")
for line in mydict:
line = ast.literal_eval(line)
line = json.dumps(line)
output.write(line)
output.write("\n")
if __name__ == '__main__':
info('main line')
p = Process(target=converter, args=(mydict))
p.start()
p.join()
プールがどこで登場するのかよくわかりませんが、詳しく説明していただけますか?