LED 컨트롤러 용으로 작은 클래스를 작성 중이며 프로세스로 실행됩니다. 아이디어는 일부 코드가 지속적으로 실행되어 i2c 버스에서 LED를 깜박이는 것입니다.이 클래스 범위 변수가 재귀 함수에서 업데이트되지 않는 이유는 무엇입니까?
저는 OOP에 Python을 처음 접했고 Python에서 Processes를 처음 사용합니다. 저는 파이썬 3.4에서 멀티 프로세싱을 사용하고 있지만, 새로운 프린트 기능 또한 2.7x에서 실행해야합니다.
코드를 실행하면 깜박임 그룹 목록에 영향을 미치기 위해 세 가지를 추가합니다. 그러나 이는 ledblinkloop 함수에서 결코 감지되지 않고 계속 실행되도록 자동으로 호출됩니다.
저는 파이썬에서 근본적으로 뭔가 잘못 이해했다고 생각합니다. 로 실행해야합니다
from multiprocessing import Process, Queue
import time
class LedController(Process):
def __init__(self):
super(LedController, self).__init__()
print("ledcontroller started: ",self.name)
self.blinkgroup = [0x04,0x05]
def run(self):
self.ledblinkloop()
def led_blink_on(self,led):
if(led not in self.blinkgroup):
print("LED not in blink group, adding. New blinkgroup length:",len(self.blinkgroup))
self.blinkgroup.append(led)
def ledblinkloop(self):
print("Length of blinkgroup:",len(self.blinkgroup))
time.sleep(1)
self.ledblinkloop()
class myclass:
def __init__(self):
ledcontroller = LedController()
ledcontroller.start()
while(1):
time.sleep(5)
ledcontroller.led_blink_on(0x08)
ledcontroller.led_blink_on(0x09)
ledcontroller.led_blink_on(0x10)
time.sleep(5)
if __name__ == "__main__":
코드 추가 파이썬 프로세스를 산란에 의해 파이썬 3
정확히 여기에 클래스 수준 변수가 있습니까? –
잘못된 이름을 사용하고 있으면 언제든지 편집하십시오. self.blinkgroup = [0x04,0x05]이 (가) 수업 수준 과제가 아니십니까? – Chris
seprate LED 개체가있는 두 개의 프로세스가 있습니다. 그 중 하나에 추가 중이지만 다른 하나는 별도의 프로세스에 있으며 완전히 다른 데이터를 가지고 있습니다. (또한'self.blinkgroup = ...'는 클래스 속성이 아닌 인스턴스 속성입니다.) – BrenBarn