多线程的异常处理

1. 

# -*- coding: utf-8 -*-def get_multithreading_res(executor,fun_name,arg_list):
    i = 1/0
    return list(executor.map(fun_name, arg_list))

def task_func(i):
    try:
        if i == 'a':
            i = i/0
            return {'status': 0, 'msg': i}

        if i == 'b':
            return {'status': 1, 'msg': i}

        if i == 'c':
            return {'status': 0, 'msg': i}

    except Exception as e:
        return {'status': -1, 'msg': e}

def f1():
    # 1.thread_arg
    thread_arg=['a','b','c']
    try:
    # 2.提交多线程
        multithread_res_list = get_multithreading_res(settings.common_executor, task_func, thread_arg)
        print('multithread_res_list',multithread_res_list)

        # 3.判断结果:
        for i_thread_res in multithread_res_list:
            if i_thread_res['status'] ==1:
                print('返回成功',i_thread_res)
            elif i_thread_res['status'] ==0:
                print('返回失败',i_thread_res)

            else:
                print('调用task_func有异常', i_thread_res['msg'])

    except Exception as e:
        print('执行f1函数发生异常:%s' %e)

f1()

 


2.任务函数不做异常处理,出异常后,多线程中断:

# -*- coding: utf-8 -*-def get_multithreading_res(executor,fun_name,arg_list):
    return list(executor.map(fun_name, arg_list))

def task_func(i):

    if i == 'a':
        i = i/0
        return {'status': 0, 'msg': i}

    if i == 'b':
        return {'status': 1, 'msg': i}

    if i == 'c':
        return {'status': 0, 'msg': i}


def f1():
    # 1.thread_arg
    thread_arg=['a','b','c']
    try:
    # 2.提交多线程
        multithread_res_list = get_multithreading_res(settings.common_executor, task_func, thread_arg)
        print('multithread_res_list',multithread_res_list)
        # 3.判断结果:
        for i_thread_res in multithread_res_list:
            if i_thread_res['status'] ==1:
                print('返回成功',i_thread_res)
            elif i_thread_res['status'] ==0:
                print('返回失败',i_thread_res)
            else:
                print('调用task_func有异常', i_thread_res['msg'])

    except Exception as e:
        print('执行f1函数发生异常:%s' %e)

f1()

 

3.

# -*- coding: utf-8 -*-def get_multithreading_res(executor,fun_name,arg_list):
    return list(executor.map(fun_name, arg_list))

def task_func(i):
    try:
        if i == 'a':
            i = i/0
            return {'status': 0, 'msg': i}

        if i == 'b':
            return {'status': 1, 'msg': i}

        if i == 'c':
            return {'status': 0, 'msg': i}

    except Exception as e:
        return {'status': -1, 'msg': e}

def f1():
    # 1.thread_arg
    thread_arg=['a','b','c']
    try:
    # 2.提交多线程
        multithread_res_list = get_multithreading_res(settings.common_executor, task_func, thread_arg)
        print('multithread_res_list',multithread_res_list)

        # 3.判断结果:
        for i_thread_res in multithread_res_list:
            if i_thread_res['status'] ==1:
                print('返回成功',i_thread_res)
            elif i_thread_res['status'] ==0:
                print('返回失败',i_thread_res)
            else:
                print('调用task_func有异常', i_thread_res['msg'])

    except Exception as e:
        print('执行f1函数发生异常:%s' %e)

f1()

 

2.

 

posted @ 2019-07-28 21:50  yunfengding  阅读(271)  评论(0编辑  收藏  举报