今天一直在做opentsdb 大量导入数据的工作。 中间遇到了一些值得记录的问题, 这里随手记一下 明天好好整理
1. 多进程logger
python的logging模块不支持多进程,但我们可以用syslog模块 把进程写给linux/unix的syslog服务。
syslog 有local 0 - 7 8个通道。 把一个通道配置到你的日志文件 然后写入即可
2. 多进程
apply_async 这个函数有点奇怪。下面的代码df如果是string就可以。如果不是string, 那么子进程好像不会运行。。
#!/usr/bin/python __author__ = 'mingwli' import syslog import multiprocessing from multiprocessing import Pool import pydevd syslog.openlog('file: %s' % "My file", 0, syslog.LOG_LOCAL0) def write_log(f): syslog.syslog('Log msg: %s' % 'test msg') pool = Pool(processes=20) result = [] mylist = range(0, 20) for df in mylist: result.append(pool.apply_async(write_log, (str(df)))) pool.close() pool.join() print "all done"