私はマルチプロセッシング初心者だ、Pythonの、マルチスレッド遅すぎる、マルチ
私はスレッドについて何かを知っているけど、私はうまくいけばマルチプロセッシングと、この計算を高速化する必要があります。
例説明:はスレッドに文字列を送信し、文字列+ベンチマークテストを変更し、 結果を印刷に戻します。
from threading import Thread class Alter(Thread): def __init__(self, word): Thread.__init__(self) self.word = word self.word2 = '' def run(self): # Alter string + test processing speed for i in range(80000): self.word2 = self.word2 + self.word # Send a string to be altered thread1 = Alter('foo') thread2 = Alter('bar') thread1.start() thread2.start() #wait for both to finish while thread1.is_alive() == True: pass while thread2.is_alive() == True: pass print(thread1.word2) print(thread2.word2)
これは現在、約6秒かかりれ、私はそれがより速く移動する必要があります。
私はマルチプロセッシングを検討しており、上記のコードに相当するものを見つけることができません。私が思うにはプールですが、私が見つけた例は分かりづらいものです。私はすべてのコア(8コア)multiprocessing.cpu_count()
を利用したいと思いますが、私は実際にマルチプロセッシングに関する有用な情報のスクラップを持ち、上記のコードを複製するのに十分ではありません。もし誰かが私を正しい方向に向けることができれば、より良い方法を見つけることができます。 Python 3 please
スレッドが完了するまでビジー状態ではありません。 Thread.join()を使用してください! – soulcheck
なぜですか?私はコーディングの大部分でこれを行いました。もしあなたが良い理由を提供できるのであれば、私はそれをすべて変更します:) – Rhys
それは少なくともビジー待機と同じくらい良く、スレッドを食べることなくスレッドが終了するまでcpu(ただし、私はcpythonがThread.join()の中でビジーではないので、私は賭けたいと思っています。 – soulcheck