Python 스크립트를 파라 메트릭으로 계산하기위한 드라이버 스크립트
이것은 무엇입니까?
자체 제작된 Timer 라이브러리의 오차를 측정하기 위해 작성한 드라이버 스크립트입니다.
있다
python
스크립트를, 다른 조건으로 계산시키기 위한 드라이버 툴입니다. 어떻게 표현할 수 있는지 몰랐지만 WebDriver
를 이미지하여 드라이버라고 표현했습니다.Python
스크립트를 드라이브하기 위한 드라이버 스크립트라는 느낌입니다.드라이버 스크립트
파이썬
from timer import Timer
def main():
seconds = 5
interval_set = [0.01,0.025,0.05,0.1,0.15,0.2,0.25,0.5,0.75,1,2,2.5,3,3.5,4,4.5]
num = len(interval_set) + 1
for case in range(1,num):
interval = interval_set[case-1]
timer = Timer(seconds, interval)
timer.test(seconds, interval, case)
if __name__ == '__main__':
main()
이것을 실행하면
timer.py
에 있는 test
를 interval_set
에 지정된 값마다 실행하여 결과를 기록합니다.timer.py
의 전반 부분은 재게재가 됩니다만, 다음과 같습니다.파이썬
import time
import csv
import platform
class Timer:
def __init__(self, seconds, interval):
self.interval = interval
self.seconds = seconds
self.n = int((seconds - (seconds % interval))/interval)
def timer(self, seconds,interval):
time_start = time.perf_counter()
time.sleep(self.interval*self.n)
time_stop = time.perf_counter()
self.remain = seconds - (time_stop - time_start)
if self.remain > 0: # 補正を入れるとするとココかな
time.sleep(self.remain)
else:
pass
self.real = time.perf_counter() - time_start
self.error = self.real - seconds
return False
def test(self,seconds, interval, case):
filename = f"./error_data{case}"+"_"+str(platform.system())+".csv" # フォーマット済み文字列リテラル
with open(filename, 'w') as f: # wは新規作成
f.write('seconds(sec),interval(sec),real(sec),error(msec)\n')
f.close()
for i in range(1000): # 計測回の設定
while self.timer(seconds, interval):
pass
else:
print('ループ'+str(case)+' '+str(i+1)+'回目 '+'interval=' + str(interval) + 'sec Error:'+str(self.error*1000)+'msec')
save_data = [self.seconds,self.interval,self.real, self.error*1000]
with open(filename, 'a', newline='') as f:
writer = csv.writer(f, lineterminator='\r\n')
writer.writerow(save_data)
이 예에서는 16의 interval 값마다 1000회 정도 오차를 측정하고 있습니다.
꽤 대기 시간이므로 한 번씩 실행하는 것은 수행에 가깝네요.
이런 일이야말로 컴퓨터의 차례입니다.
main.py를 실행하면
error_data1_Darwin.csv
에 결과가 기록됩니다.Mac에서 실행 중이므로 Darwin입니다. 라즈파이에서 실행하면 Linux가됩니다.
$ python main.py
시각화
대량의 그래프를 일일이 표시하고 있으면 마음이 부러질 것 같아지므로, 이하의 스크립트로 그래프화하고 있습니다.
파이썬
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
num_figure = 9 # 描画したいcsvファイルの数
fig = plt.figure(figsize=(10.0, 15.0))
for i in range(1, num_figure+1):
df = pd.read_csv('./data/error_data{}_Darwin.csv'.format(i)) # csvファイル読み込み
df_error = df['error(sec)'] # Error列の読み込み
df_param = df['interval(sec)'] # Interval列の読み込み
df_sec = df['seconds(sec)'] # Seconds列の読み込み
ax = fig.add_subplot(5, 2, i) # 5行2列の配置で順に描画してくれます。
sns.distplot(df_error, kde=False, rug=False, bins=100)
# plt.hist(df_error,bins=100, alpha=0.4, histtype='stepfilled', color='g')
ax.set_title("Case{}".format(i)+' ('+str(df_sec[1])+'sec Timer, Int.='+str(df_param[1])+'sec)') # グラフにタイトルをつける
ax.set_ylim(0,25) # y軸の範囲を設定
ax.set_xlim(-0.001,0.011) # x軸の範囲を設定
plt.tight_layout() # グラフの間隔を調整
plt.savefig('Error.png')
plt.show()
순식간에 그래프가 그려집니다.
그래프의 배열 방법을 바꾼 것만으로, 재게재가 됩니다.

「이러면 더 좋다」등, 코멘트 받을 수 있으면 기쁘게 생각합니다.
Reference
이 문제에 관하여(Python 스크립트를 파라 메트릭으로 계산하기위한 드라이버 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mashi0727/items/5d977a72f84091cf261e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)