File one 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
它会继续打印hi
发布于 2016-01-28 12:41:52
如果为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“。
发布于 2016-01-29 07:49:21
File one 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-29 08:07:17
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
时,在退出之前可能会打印出任何数量的"Hi“行。这只是因为执行线程的确切交织是未定义的。不能保证你只会得到一个"Hi“。
https://stackoverflow.com/questions/35061410
复制相似问题