поток eventlet не печатает вывод - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в потоках Python, пробуя потоки событий, я написал простую программу, которая вычисляет квадраты и кубы числа и выпускает на нем два потока событий.мой код, как показано ниже:

    import eventlet
    eventlet.monkey_patch()
    def square(num):
        print "square={}".format(num*num)
    def cube(num):
        print "square={}".format(num*num*num)
    t1 = eventlet.spawn_n(square, 10)
    t2 = eventlet.spawn_n(cube, 10)

Приведенный выше код исключает, но не распечатывает вывод?Можете ли вы предложить мне, где я иду не так, мне нужно добавить в код насыщение "wait"?

1 Ответ

0 голосов
/ 13 мая 2018

Итак, Evenlets - это демоны, а это означает, что если код ядра останавливается, потоки останавливаются.Если вы хотите подождать, вы должны работать с классом событий:

import eventlet
from threading import Event
eventlet.monkey_patch()

se=Event()
def square(num):
    print(    "square={}".format(num * num))
    se.set()

sc=Event()
def cube(num):
    print(  "square={}".format(num * num * num))
    sc.set()

t1 = eventlet.spawn_n(square, 10)
t2 = eventlet.spawn_n(cube, 10)
se.wait()
sc.wait()
...