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.)
파이썬
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.)
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.)