2016-03-22 80 views
1

我有一些代碼,看起來像ThreadPoolExecutor日誌記錄? (蟒蛇)

with futures.ThreadPoolExecutor(max_workers=2) as executor: 
    for function in functions: 
     executor.submit(function) 

我怎麼會記錄哪些功能正在由執行人處理?我可能會或可能不會有從職能範圍內記錄的能力 - 希望執行人本身登錄類似

print "handling process {i}".format(i=current_process) 

對如何處理這有什麼想法?

回答

1

我想這是一個有點老了,但我偶然發現的問題,我想我會把一個答案,我用了可以調用該函數之前,引用記錄器的一個實例的包裝:

import logging 
import os 
import concurrent.futures 


logging.basicConfig(filename=os.path.expanduser('~/Desktop/log.txt'), level=logging.INFO) 
logger = logging.getLogger("MyLogger") 


def logging_wrapper(func): 
    def wrapped(*args, **kwargs): 
     logger.info("Func name: {0}".format(func.__name__)) 
     func(*args, **kwargs) 
    return wrapped 


def a(): 
    print('a ran') 


def b(): 
    print('b ran') 


with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: 
    for func in [a, b]: 
     executor.submit(logging_wrapper(func))