背景: 私は膨大なファイル.txt
を処理する必要があります。それはdata mining
プロジェクトです。 だから私は各1つの100MB
サイズをファイル多くの.txt
にそれを分割してきましたが、同じディレクトリにそれらをすべて保存し、それらをこのように実行するために管理:プロセスでPython - マルチプロセッシングとテキストファイルの処理
from multiprocessing.dummy import Pool
for filename in os.listdir(pathToFile):
if filename.endswith(".txt"):
process(filename)
else:
continue
を、私は、ファイルを解析しますオブジェクトのリストに追加し、次に別の関数を適用します。これは、そのままファイル全体を実行するよりも遅いです。しかし、十分な大きさのファイルでは、すぐに実行することができず、スライスする必要があります。だから私は各process(filename)
が完了するのを待つ必要がないのでスレッドを持っていたい。私はそれを適用するにはどうすればよい
?私はthisをチェックしましたが、私は任意の助けをいただければ幸いしてください
...私のコードにそれを適用する方法を理解していませんでした。 私はこれを行う方法を確認するためにhereを見ました。私が試した:
pool = Pool(6)
for x in range(6):
futures.append(pool.apply_async(process, filename))
は、残念ながら、私はそれが唯一の最初の6つのテキストファイルを行います実現し、またはそうではないだろうか?どうすればそれを動作させることができますか?スレッドが終了するとすぐに別のファイルテキストを割り当てて実行を開始します。
EDIT:
for filename in os.listdir(pathToFile):
if filename.endswith(".txt"):
for x in range(6):
pool.apply_async(process(filename))
else:
continue
は、ループ内のすべてのファイル名を渡します。 6は、6つのファイルが同時に処理されることを意味します。しかし、PythonのGILとスレッドのためにスピードを上げることはできません。代わりにマルチプロセッシングを見てください。 –
あなたはスレッドプールまたはプロセスプールについて話していますか? – roganjosh
@roganjosh、それは同じプログラムなのでスレッドでなければならないのですか? –