• 多线程的异常处理


    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.

  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/11261085.html
Copyright © 2020-2023  润新知