通过下面demo,学会python的logging使用,多线程使用,运行 app.py里的main然后看日志
app.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
import thread_job
# logging.basicConfig(filename='myapp.log',
# format='%(asctime)s %(module)s %(filename)s %(funcName)s %(lineno)d %(levelname)s: %(message)s',
# datefmt='%y%m%d %H:%M:%S',
# level=logging.DEBUG)
logging.basicConfig(filename='myapp.log',
format='%(asctime)s %(filename)s#L%(lineno)d %(levelname)s: %(message)s',
datefmt='%y%m%d %H:%M:%S',
level=logging.DEBUG)
logger = logging.getLogger(__name__)
if __name__ == '__main__':
logger.info('app start')
thread_job.my_do()
logger.info('done')
logger.info('----------')
thread_job.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
import threading
import time
logger = logging.getLogger(__name__)
# 线程任务,统计数
thread_count = 0
thread_lock = threading.Lock()
def thread_job(*args):
for i in range(10):
thread_lock.acquire()
global thread_count
thread_count = thread_count + args[1]
thread_lock.release()
logger.info("thread %s do %s %s, count %s", threading.current_thread().name, i, args[0], thread_count)
time.sleep(1)
def my_do():
logger.info('in dd')
threads = []
try:
t1 = threading.Thread(target=thread_job, name='t1', args=('t1-1', 1))
t2 = threading.Thread(target=thread_job, name='t2', args=('t2-1', 2))
t3 = threading.Thread(target=thread_job, name='t3', args=('t3-1', 3))
t4 = threading.Thread(target=thread_job, name='t4', args=('t4-1', 4))
t5 = threading.Thread(target=thread_job, name='t5', args=('t5-1', 5))
threads.append(t1)
threads.append(t2)
threads.append(t3)
threads.append(t4)
threads.append(t5)
# 多个任务并行,但是只需要用一个任务的时间,高效
logger.info('thread start')
for t in threads:
t.start()
for t in threads:
t.join()
logger.info('thread done')
logger.info('thread count %s', thread_count)
logger.info('expect count %s', (1+2+3+4+5)*10)
except:
print "Error: unable to start thread"