0
私はPythonでマルチプロセッシングを使用してコードをスピードアップしようとしています。マルチプロセッシングを実装しようとしたときに遭遇した唯一の問題は、関数にreturn文があり、そのデータをリストに保存する必要があったことです。私がgoogleを使って見つけた最良の方法は、 "q.put()"としてキューを使用し、 "q.get()"を使用してそれを取得することでした。唯一の問題は、コンパイル後にコマンドプロンプトを使用すると、私のCPUをほとんど使用していないことを示し、Pythonプロセスが1つしか実行されていないことを示しているからです。私が "q.get()"を削除すると、プロセスは超高速で、私のCPUを利用します。私はこれを正しい方法でやっていますか?これはPythonでマルチプロセッシングキューを使用する正しい方法ですか?
import time
import numpy as np
import pandas as pd
import multiprocessing
from multiprocessing import Process, Queue
def test(x,y,q):
q.put(x * y)
if __name__ == '__main__':
q = Queue()
one = []
two = []
three = []
start_time = time.time()
for x in np.arange(30, 60, 1):
for y in np.arange(0.01, 2, 0.5):
p = multiprocessing.Process(target=test, args=(x, y, q))
p.start()
one.append(q.get())
two.append(int(x))
three.append(float(y))
print(x, ' | ', y, ' | ', one[-1])
p.join()
print("--- %s seconds ---" % (time.time() - start_time))
d = {'x' : one, 'y': two, 'q' : three}
data = pd.DataFrame(d)
print(data.tail())
これをクリアしていただきありがとうございます。私はなぜ1つのプロセスだけが実行されていたのか理解できず、今なぜ – BillyRay