2014-07-25 10 views
1

Stackless Python으로 시작하기 만하면됩니다. 실행 시간에 즉, stackless.run()을 호출 한 후 일부 작업 릿을 만들려고합니다. 나는이 함수가 메인 쓰레드를 막지 않을 것이라고 생각했기 때문에 필요한 경우 새로운 태스크 릿을 생성 할 수있을 것이다. 그래서 tasklet에서 실행되는 tasklet-creator 함수를 만들기로 결정했습니다. 이것은 내가 무엇을 가지고 : "안녕하세요, {태스크 릿의 수를}"런타임시 태스크 렛 만들기

import stackless 

from time import sleep 

def say_hello(s): 
    while True: 
     print("Hello, %s!" % s) 
     sleep(5) 

def creator(): 
    i = 0 
    while True: 
     i += 1 
     t = stackless.tasklet(say_hello)(str(i)) 
     t.insert() 
     sleep(5) 

stackless.tasklet(creator)() 
stackless.run() 

이 코드는 새로운 태스크 릿 5 초마다 생성해야하며, 각각 인쇄한다 무한대로 (매 5 초마다). 예상 출력은 다음과 같습니다.

Hello, 1! 
Hello, 1! 
Hello, 2! 
Hello, 1! 
Hello, 2! 
Hello, 3! 
Hello, 1! 
Hello, 2! 
Hello, 3! 
Hello, 4! 
... 

그러나 코드를 실행할 때 출력이 없습니다.

여기에 무슨 문제가 있습니까?

답변

1

그냥 추측하지만 나는 창조자()에서 자기 전에 t.insert() 후에 stackless.schedule()에 전화해야한다고 생각합니다. 나는 창조자가 통제력을 되돌려주지 않는다고 생각한다. say_hello와 동일합니다.

+0

그건 속임수 였어! 감사. – cdonts