私のCPUの単一コアを使用してファイルを処理しようとしています。しかし、私はそれが単一のコアを使用するのに十分ではないと思います。代わりに、自分のシステムの複数のコアにアクセスできたら、そのプロセスをより速く、より速く実行させることができます。python3を使用してファイルを処理するためにマルチスレッドを使用する
残念ながら、私は単一コアのみを使用してファイルを処理することを知っています。ここに私がやったことです:
data = open('datafile','r',encoding='ascii',errors='ignore')
for line in data.readlines():
splitted = line.lower().strip().split()
check = process(splitted[0],splitted[1])
if check == '':
pass
data.close()
私は別にline
を取り、必要に応じて出力を取得中TEH process()
を処理するためにCPUの完全な能力を使用する方法を知りたいですか?処理中にスレッドのデッドロック状態をどのように回避しても、プロセス出力には危険があります。
あなたの意見を私と共有してください。
デッドロックはありますか?デッドロック状態には少なくとも1つのロックが必要です。今度はPythonにGILというものがあるので、複数のコアを利用する唯一の方法は、スレッドの代わりにプロセスを使うことです。パラレルディスクioはパフォーマンスを向上させるかもしれません(あなたが持っているディスクに依存します)ので、私は 'multiprocesing.Pool'を使って並列処理のためにメインプロセスからファイルの"チャンク "を送ることを提案します。 – freakish
@freakishファイルをチャンクにダイビングするとデータが失われる可能性がありますが、完全ではないデータを維持することが少し重要です。 –
なぜデータが失われますか?行の後に行を読み、各行を子プロセスに送ります。ここにはデータ損失はありません。 – freakish