나는 많은 USB (전기 릴레이 및 온도 센서)와 RS232 (진공 게이지) 장치를 제어하기 위해 파이썬 코드를 작성했습니다. 이 메인 스크립트 내에서 (예 : myscript.py
), 나는 다른 실험 프로토콜, 즉 릴레이를 열고 닫고, 온도와 압력 값을 읽는 일련의 명령어를 정의하는 모듈 (예 : exp_protocols.py
)을 가져오고 싶습니다. (예 : "온도가 200 ℃를 초과 할 때까지 대기").모듈 내부에서 전역 변수에 액세스하기
내 초기 시도는이처럼 보였다 : exp_protocols.py
와
switch_A = Relay('A')
switch_B = Relay('B')
gauge_1 = Gauge('1')
global switch_A
global switch_B
global gauge_1
from exp_protocols import my_protocol
my_protocol()
는 다음과 같이보고 :
는def my_protocol():
print 'Pressure is %.3f mbar.' % gauge_1.value
switch_A.close()
switch_B.open()
이 전역 변수 오류를 출력 exp_protocols.my_protocol
이 myscript.py
에 정의 된 개체에 액세스 할 수 있기 때문입니다.
이 myconfig.py
, 나는 (?한다) 예를 들어, 다른 모듈에있는 모든 내 Relay
및 Gauge
변수를 만들 수 있다는 것을, 여기에 그 이전의 질문에 대한 답변을 읽고, 것, 그리고 myscript.py
및 exp_protocols
에서 다음 import myconfig
모두? 하지만 그렇게하면 Relay
과 Gauge
개체가 두 번 만들어지지 않습니다 (따라서 이미 활성화 된 직렬 포트를 열려고 시도하는 등)?
이러한 종류의 모듈 간 통신을 달성하는 가장 좋은 방법은 무엇입니까?
미리 감사드립니다.
이유 : 동일한 기능을 모두 처리 할 수있다, (... 그리고 난 당신이 데이터를 구성하는 방법 아무 생각이 없기 때문에 난 그냥이를 만들고 있어요) 당신이 목록에서 스위치 블록이 있다고 가정 'switch_A','switch_B','gauge_1'을 함수 매개 변수로'my_protocol'에 넘겨주지 않습니까? –