档案一个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
继续打印
答案 0 :(得分: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)
你会看到两秒后sam功能将停止打印“hi”。
答案 1 :(得分:0)
档案一个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()
子线程在主线程结束后停止执行
答案 2 :(得分:0)
test.py:
from threading import Thread
import sravi
x=Thread(target=sravi.sam)
x.daemon=True
x.start()
sravi.py:
def sam():
while True:
print "Hi"
当您运行python test.py
时,任意数量的行代表"嗨"可能会在退出前打印出来。这仅仅是因为执行线程的确切交织是不确定的。我们无法保证您只能得到一个"嗨"。