2016-09-05 6 views
0

저는 파이썬을 사용하여 게임 프로토 타입을 제작 중입니다. 책 중 하나를 참조하면, 나는 현재 reactor.doSelect() 및 reactor.runUntilCurrent에 관한 질의

def iterate(self): 
    now = time.time() 
    interval = now - self.beginFrame 
    self.beginFrame = now 

    # update the network 
    reactor.runUntilCurrent()   
    reactor.doSelect(0) 

    # update the games 
    for game in self.games: 
     game.update(interval) 

그러나, 위의 코드는 오류 우분투 머신에 실패 게임 업데이트하려면 다음 코드를 사용하고 "AttributeError를 'EPollReactor'개체가 어떤 속성 'doSelect를'이 없습니다." 나는 뒤틀린 16.1.1을 사용하고 있으며 다음은 나의 질문이다.

1) twistedmatrix에서 주어진 문서에서 runUntilCurrent와 doSelect 메소드를 찾지 못했지만이 메소드는 더 이상 사용할 수 없습니까?

2) reactor.iterate()가 doSelect()를 대체합니까? 3) 이전 게시물에서 reactor.iterate()가 응용 프로그램을 느리게 만들고 버그가 발생할 수 있음을 알았습니다. UI 업데이트가 필요한 상황을 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

보통 Twisted는 기본적으로 epoll reactor를 선택합니다. doSelect 기능은 selectreactor에서 사용할 수 있습니다. 선택 원자로를 사용하려면 먼저 선택 원자로를 설치 한 다음 twisted.internet.reactor을 가져옵니다.

from twisted.internet import selectreactor 
selectreactor.install() 
from twisted.internet import reactor 

은 선택은 당신의 책을 사용하는 이유가 될 수 있습니다 가장 관련성이 운영 체제에서 작동합니다.

1) I didn't find runUntilCurrent and doSelect methods in the documentation given in twistedmatrix

당신은 충분히 열심히 짝을 찾고하지 않을 : 모든 modules and class documents 다음을 통해 검색해보십시오 D.

2) Is reactor.iterate() replacement of doSelect() .

둘 다 비슷한 일을하는 것,하지만 난 그들이 교체를 의도하고 있다고 생각하지 않습니다. 트위스티드 코어 개발자가이 질문을하고 내가 틀렸다면 나에게 정정하기를 바랍니다.