[疑问] 主线程执行完成,程序是如何不退出的呢
dick129418 opened this issue · 5 comments
dick129418 commented
例如 __main__里面 add.consume() 它似乎是不阻塞的, 我在后面print,它执行完了也没有后续代码了.
一般的话整个程序就会退出了,然而你这个没有.请问咋实现的呢
ydf0509 commented
add.consume() 下一行print (“hello”) ,那么会在消费同时,很快打印下一行的hello,并且消费还在循环调度中。
框架默认运行consume()是不阻塞代码的,例如 taskfun1.consume() 下一行 taskfun2.consume() ,那么两个函数都会同时消费消息队列,默认是不阻塞的。
这个程序本来就不会退出啊,我没明白你提问的意思,你意思是你在add.consume()后面就因为加了一行print hello,导致代码就迅速退出了?这怎么可能加了print就迅速结束了,你意思是你下一行不加print就不会迅速结束啊?不可能的
ydf0509 commented
这个定位内是消费队列,是永久消费永久等待吓一跳消息来临的, 是不会结束的。
dick129418 commented
import threading
from time import sleep
def test():
while 1:
print(123123)
sleep(1)
if __name__ == '__main__':
threading._start_new_thread(test, ())
print(111111111)
比如,这个代码就会立即结束
ydf0509 commented
不要调用保护方法
这样运行线程就不会结束了。
再说了那你举得这个例子和框架没关系,框架中没有使用过threading._start_new_thread这种方式
import threading
from time import sleep
def test():
while 1:
print(123123)
sleep(1)
if __name__ == '__main__':
threading.Thread(target=test).start()
# threading._start_new_thread(test, ())
print(111111111)
dick129418 commented
原来如此.学废了