zoukankan      html  css  js  c++  java
  • 多线程的异常处理

    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.

  • 相关阅读:
    Head First设计模式-单例模式
    mahout算法源码分析之Itembased Collaborative Filtering(四)共生矩阵乘法
    “非常PHP学习网”(www.veryphp.cn)一期上线
    IOS深入学习(19)之View object
    POJ 1005(累加)
    Plan04.学习与提升
    一个python
    【tcl脚本】改变输出字符格式
    为什么寄存器比内存快?
    我觉得epoll和select最大的区别
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/11261085.html
Copyright © 2011-2022 走看看