0

ファイル 1 sravi.py

def sam():
    while True:
        print "HI"

メインプログラム/ファイル trial.py

from threading import Thread
import sravi
x=Thread(target=sravi.sam)
#x.setDaemon(True)
#x.Daemon=True
x.start()

メイン スレッドが終了したら "Hi" の出力を停止したいのですが、HI の出力は続行されます。x.setDaemon(True) と x.Daemon=True を試しましたが、うまくいきません。以前にそのような質問があったことは理解していますが、解決策がわかりません

-------o/p-------

>>>
>>>Hi
Hi
Hi
Hi
Hi
Hi
Hi

こんにちはを印刷し続けます

4

3 に答える 3

0

ファイル 1 sravi.py

import time

def sam(event):
    while event.is_set():
        print "hi"

メインプログラム/ファイル trial.py

import threading 
import sravi
import time
event=threading.Event()
event.set()
x=threading.Thread(target=sravi.sam,args=(event,))
x.start()
time.sleep(0.1)
event.clear()

メインスレッドの終了後に子スレッドが実行を停止する

于 2016-01-29T07:49:21.417 に答える
0

x.setDaemon(True) の場合、メインスレッドの終了時にスレッド x が終了します。
これを証明するには、次のコードを使用します。

from threading import Thread
def sam():
    while True:
    print "HI"


x=Thread(target=sam)
x.setDaemon(True)
x.start()
time.sleep(2)

2 秒後に sam 関数が「hi」の出力を停止することがわかります。

于 2016-01-28T12:41:52.417 に答える