2016-03-22 18 views
1

BenThreadPoolExecutor günlüğü? (Piton)

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

benziyor bazı kod işlevi halen uygulamakla tarafından ele ediliyor ben log ediyorum nasıl var? Ben veya fonksiyonlar içinden oturum yeteneğine sahip olmayabilir - infaz kendisi

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

bu yaklaşım konusunda herhangi bir düşünce gibi bir şey log ister ki?

cevap

1

bu biraz eski olduğunu tahmin ama sorulara tökezledi ve ben bir cevap vereceğini düşündüm ben hemen önce işlevini çağırarak bir kaydedici bir örneğini başvuruda bulunabilir bir sarmalayıcı kullanılır.

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))