需求:封装多进程模块 1.需要的时候记录日志记录整个业务场景 2.主进程能够自动唤醒僵尸进程 3.将进程编号加入回调函数
问题: 1.记录整个多进程操作业务的场景,这怎么记,从哪下手? 2.主进程自动唤醒僵尸进程是怎么实现呢? 3.将进程编号加入回调函数,是怎么加的呢?有意义吗?
求教下以上三个进程该如何入手,已经写过 n 遍,被打回几遍要重新写,现在无从下手。。。。 为了表示我不是伸手党以下是我的代码谢谢各位~~~
import traceback
import multiprocessing
from lib_log import LibLog
class MultiProcess(object):
"""
多进程操作
方法: worker
返回类型: bool 返回内容 True
接收参数:
process_num:进程数量
callback_func:多进程执行的函数
arg :函数中的参数(无可忽略)
kargs :函数中的参数是字典数据结构(无可忽略)
e.g:
mp = MultiProcess(10, func)
or mp = MultiProcess(10, func, n)
mp.worker()
"""
rpc_log = LibLog()
def __init__(self, process_num, callback_func, arg='', kwarg={}):
self.process_num = process_num
self.callback_func = callback_func
self.arg = arg
self.kwarg = kwarg
def worker(self):
jobs = []
try:
jobs_start_stime = self.__point_time()
for i in xrange(self.process_num):
try:
jobs.append(multiprocessing.Process(target=self.callback_func,
args=(self.arg), kwargs=self.kwarg))
except:
traceback.print_exc()
for job in jobs:
job.start()
job.join()
return True
except:
traceback.print_exc()
1
billlee 2016-12-03 00:08:52 +08:00
需求不清楚要多沟通啊,感觉你自己都没弄懂到底要干什么
1. 这是不是说业务是跨越了 master 和 worker? 如果是这样,你要考虑怎么从日志中区分出属于某个事务的日志,比如说给每个事务分配一个 ID? 打日志的时候加上 2. 僵尸进程是不能唤醒的。你们说的是阻塞或者陷入死循环的进程吧,一般就是设置超时,超时的杀掉 |