python 线程相关问题:多线程是否会影响子进程里面的print 操作

大概描述一下我的问题:

  • 创建了一个线程,线程内是能够正常运行的unittest框架的测试脚本
  • 测试脚本内加了一个print 操作,线程和线程内测试脚本都正常执行完成,但相关的变量没有print出来
  • 原本猜测可能和unittest有关,但去掉外层的线程创建之后,变量能正常打印,
  • 所以猜测是否和多线程有关,多线程是否会有相关的影响?
    猜测可能是这个原因,还在持续调试中,麻烦帮看看,谢谢
    注:当前只创建了一个线程,之所以使用多线程,是有多个线程同步执行case的需求
  • 部分代码如下:
#执行case 和多线程创建部分的代码
def run_case():
    cur_thread_name = threading.current_thread().name
    report_name = Path.date_time + '_' + cur_thread_name + 'Report.html'
    testlist = unittest.defaultTestLoader.discover(
        start_dir=Path.testcase_path_x_mac
        , pattern='test*.py')
    result = BeautifulReport(testlist)
    result.report(filename=report_name, description='Result of test', log_path=Path.report_path)

class myThread(threading.Thread):

    def __init__(self, thread_id, name):
        threading.Thread.__init__(self)
        self.thread_id = thread_id
        self.name = name

    def run(self):
        print('开启线程:' + self.name + '\n')
        run_case()
        print('退出线程:' + self.name)


if __name__ == '__main__':
    thread_list = []
    for i in range(len(ListData.node_list)):
        thread_name = ListData.node_list[i]
        new_thread = myThread(i, thread_name)
        thread_list.append(new_thread)
    for thread in thread_list:
        thread.start()

    for thread in thread_list:
        thread.join()
  • 部分执行case 部分,加了个print

img

会干扰,应该是报错RuntimeError一类的

其实程序能正常执行和达到预测结果那应该就没问题,如果要分析运行过程,建议从unittest的执行过程分析,线程里面用print是很正常的,但现在影响print执行,很大可能是unittest的执行顺序问题

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632