質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

375閲覧

threadingを使ってる時の時間差の計算

surarinmon

総合スコア20

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/30 10:24

簡単な質問で申し訳ありません。

LEDとカメラを同時に点灯させようとしていて、カメラで撮る時間とLEDを点灯させる時間にどのくらい時間のずれがあるのかを確かめようとしているのですが、どのようなプログラミングを行えばよいかわかりません。

下のプログラミングで定義している、ctimeとLtimeの時間差を計算するにはどうしたらよいのでしょうか。

import

1import picamera 2import datetime 3import threading 4import RPi.GPIO as GPIO 5 6GPIO.setmode(GPIO.BOARD) 7GPIO.setup(11,GPIO.OUT) 8 9USER_NAME = "pi/" 10HOME_DIR = "/home/" + USER_NAME 11SAVE_DIR = HOME_DIR + "cameradata/" 12 13datetime = datetime.datetime.today() 14datetime_formatted = datetime.strftime("%Y%m%d%H%M%S") 15 16file_name = "IMG_" + datetime_formatted 17 18starttime = time.perf_counter() 19 20 21def camera(): 22 23 with picamera.PiCamera() as camera: 24 camera.start_preview() 25 time.sleep(2) 26 27 camera.capture(SAVE_DIR + file_name + ".jpg") 28 cameratime = time.perf_counter() 29 ctime = cameratime - starttime 30 print("CAM = {:.9f}s" .format(ctime)) 31 camera.stop_preview() 32 33 34def LED(): 35 36 37 for i in range(1): 38 GPIO.output(11,GPIO.LOW) 39 time.sleep(2) 40 GPIO.output(11,GPIO.HIGH) 41 LEDtime = time.perf_counter() 42 Ltime = LEDtime - starttime 43 print("LED = {:.9f}s" .format(Ltime)) 44 time.sleep(0.01) 45 GPIO.output(11,GPIO.LOW) 46 time.sleep(2) 47 48 GPIO.cleanup() 49 50 51 52if __name__ == "__main__": 53 54 p1 = threading.Thread(target = camera) 55 p2 = threading.Thread(target = LED) 56 57 p1.start() 58 p2.start() 59

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2018/11/30 15:04

標準出力に出てきた値を普通に引けば分かると思うのですが、質問の意味が良く分かりません。
guest

回答1

0

ベストアンサー

ctimeとLtimeをglobalにします。
各スレッドが終わってから、比較しますので
p1.join()
p2.join()
のあとで、ctimeとLtimeを比較します。
以下は、こちらで確認したサンプルです。
カメラとLEDの機能は省いています。

python

1import datetime 2import time 3import threading 4ctime = 0 5Ltime = 0 6 7datetime = datetime.datetime.today() 8datetime_formatted = datetime.strftime("%Y%m%d%H%M%S") 9starttime = time.perf_counter() 10 11 12def camera(): 13 global ctime 14 time.sleep(2) 15 cameratime = time.perf_counter() 16 ctime = cameratime - starttime 17 print("CAM = {:.9f}s" .format(ctime)) 18 19def LED(): 20 global Ltime 21 time.sleep(2) 22 LEDtime = time.perf_counter() 23 Ltime = LEDtime - starttime 24 print("LED = {:.9f}s" .format(Ltime)) 25 time.sleep(0.01) 26 time.sleep(2) 27 28 29if __name__ == "__main__": 30 p1 = threading.Thread(target = camera) 31 p2 = threading.Thread(target = LED) 32 p1.start() 33 p2.start() 34 p1.join() 35 p2.join() 36 print("LED-camarea = {:.9f}s" .format( Ltime - ctime)) 37

投稿2018/11/30 15:13

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

surarinmon

2018/12/03 03:49

ありがとうございます無事にできました、お返事が遅くなってしまい申し訳ありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問