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

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

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

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

Q&A

解決済

1回答

3641閲覧

パイソンでのマルチスレッド処理

soepu

総合スコア41

Python 3.x

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

0グッド

0クリップ

投稿2018/11/27 20:49

編集2018/11/27 21:28

下記コードで、マルチスレッド処理で
WEBカメラからの動画を取り込み、
tkinterでGUIを作成して、
画面上で2値化処理などが
できるプログラムをつくりたいと考えています。

マルチスレッド間での変数のやり取り、
関数の使用など、よい方法御座いましたら
教えて下さい。

import time import datetime import threading import cv2 import tkinter as tk import queue cap = cv2.VideoCapture(1) def main(): while(True): ret,frame = cap.read() cv2.imshow("cap",frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() def ButtonClick(): print(queue.get()) def subroot(): root = tk.Tk() root.geometry("400x150") #root.title("数当てゲーム") button1 = tk.Button(root, text = "チェック", font=("Helvetica", 14), command=ButtonClick) button1.place(x = 220, y = 60) root.mainloop() thread_obj1 = threading.Thread(target=subroot) # Threadオブジェクトの作成 thread_obj2 = threading.Thread(target=main) thread_obj1.start() # targetに指定したオブジェクトを実行 time.sleep(1) thread_obj2.start()

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

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

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

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

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

can110

2018/11/27 20:54

ソースコードは出来る限り他人が実行できる状態で提示し(import文も含めて)、また、インデントが消えないようコードブロックで囲んでください。
guest

回答1

0

ベストアンサー

まず、コード全体で自動的に1つのスレッドが生成されるのでmain()のスレッドをthreading.Thread(~)する必要性は低いと思われます。
また、今のコードでは当たりませんが、もし2つのスレッドから1つの変数の状態を変える/値を書き換える場合は、同時アクセスを制御する必要があります。
変数の共有、同時アクセス制御についてはマルチスレッド処理を理解しよう(後編)
過去質問pythonのthreadingでスレッド同士で変数の受け渡し方法を教えてください。が参考になります。

投稿2018/11/27 21:49

can110

総合スコア38262

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

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

soepu

2018/11/28 03:55

ご回答ありがとう御座います。 上記参考サイトを見て試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問