ydf0509/funboost

[疑问] 主线程执行完成,程序是如何不退出的呢

dick129418 opened this issue · 5 comments

例如 __main__里面 add.consume() 它似乎是不阻塞的, 我在后面print,它执行完了也没有后续代码了.

一般的话整个程序就会退出了,然而你这个没有.请问咋实现的呢

add.consume() 下一行print (“hello”) ,那么会在消费同时,很快打印下一行的hello,并且消费还在循环调度中。

框架默认运行consume()是不阻塞代码的,例如 taskfun1.consume() 下一行 taskfun2.consume() ,那么两个函数都会同时消费消息队列,默认是不阻塞的。

这个程序本来就不会退出啊,我没明白你提问的意思,你意思是你在add.consume()后面就因为加了一行print hello,导致代码就迅速退出了?这怎么可能加了print就迅速结束了,你意思是你下一行不加print就不会迅速结束啊?不可能的

这个定位内是消费队列,是永久消费永久等待吓一跳消息来临的, 是不会结束的。

import threading
from time import sleep

def test():
    while 1:
        print(123123)
        sleep(1)

if __name__ == '__main__':
    threading._start_new_thread(test, ())
    print(111111111)

比如,这个代码就会立即结束

不要调用保护方法

这样运行线程就不会结束了。

再说了那你举得这个例子和框架没关系,框架中没有使用过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)

原来如此.学废了