Python 単一スレッド内で複数のスレッドを立ち上げてイベント制御したいときに読む (15秒で読めます)
from threading import Thread, Event
import time
import random
class MyEvent():
th1 = Event()
th2 = Event()
def task1(event: MyEvent):
while True:
event.th1.wait()
print('th1 run.')
event.th1.clear()
def task2(event: MyEvent):
while True:
event.th2.wait()
print('th2 run.')
event.th2.clear()
# manage_thがth1とth2を立ち上げる
def manage_th(event: MyEvent):
task_list = [task1, task2]
for task in task_list:
th = Thread(target=task, args=(event,), daemon=True)
th.start()
while True:
# th1とth2のイベント制御を行う
# n秒後にth1をsetして,n秒後にth2をsetする
time.sleep(random.random())
event.th1.set()
time.sleep(random.random())
event.th2.set()
# メインスレッド
def main_thread():
while True:
time.sleep(5)
break
event = MyEvent()
th = Thread(target=manage_th, args=(event,), daemon=True)
th.start()
# 5秒後にメインスレッドを終了 → manage_th終了 → th1,th2終了
main_thread()
感想
そろそろスレッド制御脱初心者したいですね。
Author And Source
この問題について(Python 単一スレッド内で複数のスレッドを立ち上げてイベント制御したいときに読む (15秒で読めます)), 我々は、より多くの情報をここで見つけました https://qiita.com/osorezugoing/items/3ad2a9a230a31028f43f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .