반응형
파이썬을 사용하다가 문제가 되는 상황을 하나 마주했다.
# 파일1 test1
from test2 import *
import time
print(temp)
time.sleep(10)
print(temp)
# 파일2 test2
import datetime
temp = datetime.datetime.now()
바로 test1 상황에서 현재 시간을 출력하는 변수를 출력하고
10초 뒤, 다시 현재 시간을 나타내는 변수를 출력했을 경우 똑같은 값이 출력되는 것이다.
이 이유는 처음 import 시에는 module 내의 변수들을 초기화 한 뒤에 로드하지만,
그 다음부터는 이미 로드되어있는 module의 값들을 불러오기 때문에 값이 변경되지 않는 것이다.
그렇기에 여기서는 import 모듈을 다시 초기화하여 호출시키는 importlib를 이용하면 된다.
이러한 값 사용을 위해서는
import test # 불러올 모듈
import importlib
importlib.reload(test) # test 모듈을 다시 불러온다.
를 선언해주고, 마지막으로 from A import * 방식을 import A 방식으로 변경해준다.
따라서 위의 코드 방식을 아래와 같이 바꾸면 정상적으로 작동한다.
# 파일1 test1
import test2 as t
import time
import importlib
print(t.temp)
time.sleep(10)
importlib.reload(test2)
print(t.temp)
# 파일2 test2
import datetime
temp = datetime.datetime.now()
반응형
'공부를 함시다 > Python' 카테고리의 다른 글
[Python] 파일을 찾을 수 없다는 오류 (0) | 2024.03.14 |
---|---|
[Python] 셀레니움 네이버 로그인 (0) | 2024.03.11 |
[Python] 컴퓨터 화면 보호기 상태 확인 (0) | 2024.03.04 |
[Python] 가상환경 설정하기 (0) | 2024.01.09 |
[Python] 텔레그램 봇 사용해보기 (0) | 2024.01.02 |