こんにちは私はコードを高速化できないため、現時点で非常に落ち込んでいます。 マルチプロセッサプールを使用しました。 Processornumbersのスピードアップと効果を評価するために、私は使用するプロセッサの数を変えます。しかし、プロセッサの数を増やすとスピードが落ちます。理論的に私は8つのプロセスを持っていれば8つのイメージを並列に計算し、4つのプロセスを使うなら4つを計算するのはなぜなかろうとしています。確かにオーバーヘッドがありますが、これは大きなボトルネックではありません。誰かがここで間違いを見つけますか?カインド)あなたは、あなたがPool.mapを(使用しての優れているapply_asyncで任意のコールバック関数を使用して、常に同じ機能(computeFeatures)を使用しないので、最大マルチプルプロセスを使用すると、Pythonコードの実行速度が遅くなる
'''
Created on 17.11.2017
@author: Max
'''
#!/usr/bin/env python
import os, sys, errno
import re
import argparse
from time import time
import multiprocessing
import glob
import numpy as np
import matplotlib.pyplot as plt
import cv2
def computeFeatures(input, chunk_num):
thresholded_chunk = []
#print("Processing Chunk,",chunk_num)
cv2.threshold(input,127,255,cv2.THRESH_BINARY_INV)
cv2.threshold(input,127,255,cv2.THRESH_BINARY_INV)
cv2.threshold(input,127,255,cv2.THRESH_BINARY_INV)
cv2.threshold(input,127,255,cv2.THRESH_BINARY_INV)
thresholded_chunk.append(cv2.threshold(input,127,255,cv2.THRESH_BINARY_INV))
return (thresholded_chunk, chunk_num)
if __name__ == '__main__':
num_Proc = 2
max_Proc = 20
while num_Proc != max_Proc:
start = time()
# Handle command line options
numProcessors = num_Proc
# Start my pool
pool = multiprocessing.Pool(numProcessors)
# Build task list
path = "InputSimulation\*"
tasks = []
image_list= []
img_idx = 0
image_pathes = glob.glob(path+".jpg")
results = []
index_for_chunk = numProcessors
while img_idx < len(image_pathes):
#print("InsterImageNumber",img_idx)
tasks.append((cv2.imread(image_pathes[img_idx],0), img_idx,))
if img_idx % numProcessors == 0:
result = [pool.apply_async(computeFeatures, t) for t in tasks]
results.append(result)
tasks = []
img_idx +=1
pool.close()
pool.join()
# Run tasks #Flatten list before print
end = time()
print("DURATION FOR " +str(num_Proc) +" PROCESSES",end - start)
num_Proc +=1
# Process results
これはハードウェアに問題がある可能性があります。GPUの仕様を含めて、実行しているマシンに仕様を投稿しますか? – Splatmistro
プロセスがCPUの制限ではなくIO制限されている場合、複数のプロセスにまたがって処理すると、処理全体が遅くなることがあります。 – VBB
Intel(R)Core(TM)i7-6500U CPU 2.5Ghz 2コア4ロジックプロセッサ、Windows 10,8GB RAM、Intel(R)HDグラフィック520 –