안녕하세요. 이창준입니다.~
파이썬 코딩 중 막히는 부분이 있어 질문 드립니다. 2CPU에서는 해결 가능성을 확신합니다.^^
import concurrent.futures
class Test():
def __init__(self):
super().__init__()
self.job_list = ['aa', 'bb']
self.run()
def run(self):
def aa():
print('aa')
return
def bb():
print('bb')
return
with concurrent.futures.ThreadPoolExecutor() as executor:
# data_list = executor.submit(locals()['aa']()) # 정상 작동
data_list = [executor.submit(locals()[job]()) for job in self.job_list] # key에러 발생
Test()
위의 코드 중 run 메서드 내
# data_list = executor.submit(locals()['aa']()) 는 정상 작동되나,
data_list = [executor.submit(locals()[job]()) for job in self.job_list] 의 경우, 키 에러가 발생합니다. locals()내 각각의 메서드가 딕셔너리 형태로 나타납니다만 에러가 발생하네요.
고수분들께 도움을 요청합니다.
Ãë¹Ì·Î °øºÎ¸¦ ÇÏ°í Àִµ¥ ±¸±¼¸µÀ¸·Î ´äÀ» ¸ø ã¾Ò³×¿ä.^^
ÀÏ´Ü for job in ±¸¹®¿¡¼ job º¯¼öÀÇ À¯È¿¹üÀ§(scope)¸¦ °øºÎÇØ º¸¼Å¾ß ÇÒ °Í °°½À´Ï´Ù.
executor.submit(locals()[job]()
ÀÌ·¯¸é µÇ´Âµ¥ ±»ÀÌ data_list·Î ÀúÀåÇÏ´Â ÀÌÀ¯°¡ ÀÖ³ª¿ä?
data_list = []
with concurrent.futures.ThreadPoolExecutor() as executor:
for job in self.job_list:
data_list.append(executor.submit(locals()[job]()))
´Ü¼ø for¹®À¸·Î ¸®½ºÆ®¸¦ ³Ö´Â ¹æ¹ýÀº µ¿ÀÛÀ» Çϳ׿ä. ^^
Ç㳪 ¿Ö!!!^^ ÄÄÇÁ¸®ÇÚ¼Ç ÇüÅ´ ¹®Á¦°¡ »ý±â´ÂÁö..ÇãÇã..¿ä»óÇÕ´Ï´Ù.