为什么python多线程调用threading重写run出现重复调用错误 5C

【问题描述】
使用threading进行多线程继承,重写run方法,在进行多线程调用时,出现run重入问题,并且呈线程数递增,哪位大神帮忙看下。

【代码】

class CMyThread(threading.Thread):
    m_print = None
    m_result = None

    m_func = None
    m_args = None
    m_lock = None

    def __init__(self, func, *args):
        threading.Thread.__init__(self)
        self.m_print = CPrintMgt()
        self.m_func = func
        self.m_args = args
        print 'CMutilProcess[{}, {}, {}, {}]'.format(self, func, args, self.getName())

    def run(self):
        print 'CMutilProcess_run[{}, {}, {}, {}, {}]'.format(self, self.getName(), self.m_args, id(self), *self.m_args)
        self.m_result = self.m_func(*self.m_args)


def multhread_process_handle_func(func, args): 
    bResult = False
    output_result = []
    try:
        threads = []
        threadNum = len(args)
        # 创建线程
        for i in range(threadNum):
            t = CMyThread(func, *tuple(args[i]))
            threads.append(t)

        # 启动线程
        for i in range(len(threads)):
            threads[i].start()

        # 执行线程
        for i in range(len(threads)):
            threads[i].join()

        # 获取结果
        bResult = True
        # print_obj.fnPrintInfo('--------------------------------------------')
        print('--------------------------------------------')
        for i in range(len(threads)):
            if isinstance(threads[i].m_result, bool):
                bResultTemp = threads[i].m_result
                print('multhread[thread:{}]handle result:{}'.format(i, threads[i].m_result, bResultTemp))
                bResult &= bResultTemp
                output_result.append(None)
            elif isinstance(threads[i].m_result, list) or isinstance(threads[i].m_result, tuple):
                bResultTemp = threads[i].m_result[0]
                print('multhread[thread:{}]handle result:{}'.format(i, threads[i].m_result, bResultTemp))
                bResult &= bResultTemp
                output_result.append(list(threads[i].m_result[1:]))
        print('multhread[threadnum:{}]all handle result:{}'.format(len(threads), bResult))
        print('--------------------------------------------')
        # print_obj.fnPrintInfo('--------------------------------------------')
        # print_obj.fnPrintInfo('多线程数量({})执行结果:{}'.format(threadNum, bResult))
        # print_obj.fnPrintInfo('--------------------------------------------')
    except Exception as e:
        bResult = False
        # print_obj.fnPrintException(e)
    finally:
        return bResult, output_result

图片说明

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

0
nonetype object has no attribute recv
1
python3 怎样用threading多线程处理同一数据
1
python3导入excel后数值变为小数点浮点型,如何转化为整数?
0
python3.7 要从串口读数据保存到文件,运行后发现如发送的数据中文字比较多就会出现乱码或丢数据。
3
C#多线程读同一文件,写多个文件并更新进度条
2
C#WPF工程调用C++的32位DLL在其他PC运行报错:试图加载格式不正确的程序(异常来自 HRESULT:0x8007000B)
1
采用多线程爬取包情包,程序运行得不到预计的结果,求帮助
1
node.js-socketio与Python-socketio通信问题
3
线程锁的小疑问,线程锁的位置问题
1
python调用一个函数里返回的变量不成功
2
python 全局变量设置问题
1
请问这种错误怎么解决?
1
PyQt5关于QThread线程阻塞以及UI界面假死的问题
1
wxpython进度条由线程进行控制,为何没有滚动?
0
TypeError: 'unicode' object is not callable 错误 python2.7
1
python的网络请求线程数量如何根据自己服务器和对方的性能配置(内存,cpu,带宽)来调整
1
python 在子线程中开启websever(使用aiohttp)linux系统下报错 set_wakeup_fd only works in main thread
1
C#如何通过星星类扩展出流星类,流星通过重写星星的show方法显示出一颗移动的星星
1
求助:Python的Subprocess.popen()返回的对象的stdin怎么用以下代码为何写入后没反应也不会报错
1
为什么WinForm不能显示innerHTML拼接的表格?