首页 > 编程 > Python > 正文

python回调函数中使用多线程的方法

2020-02-16 11:17:37
字体:
来源:转载
供稿:网友

下面的demo是根据需求写的简单测试脚本

#!/usr/bin/env python# coding: utf-8# 第一个列表为依赖组件和版本号,后面紧跟负责人名称# 接着出现第二个以来组建列表,负责人为空了# 所以根据需求需要对组件、版本号、负责人进行不同处理# 这时在for循环中根据if判断,写回调函数处理# 格式不一致数据的测试数据a = [[u'tool-1', u'1.9.13'], u'xiaowang', u'xiaoqu', [u'tool-2', u'1.9.23'], [u'tool-3', u'1.9.33'], [u'tool-4', u'1.9.43'], u'pi',[u'tool-5', u'1.9.53']]# a = [[u'tool-1', u'1.9.13'],u'xiaowang',[u'tool-2', u'1.9.23'],u'xiaowang', [u'tool-3', u'1.9.33'],u'xiaowang']# a = [[u'tool-1', u'1.9.13']]# [u'tool-1', u'1.9.13']your_pro = a[0]# print your_pro# [u'xiaowang', u'xiaoqu', [u'tool-2', u'1.9.23']]tmp = a[1:]# print tmpdef git_callback(whole_v, proj_value, name_value):  # 如果存在负责人存在  try:    if type(name_value[0]) is unicode:      # 对除去列表0个索引的数据(依赖名和版本号)后面的数据进行遍历      for i in name_value:        # 碰到后面的数据是列表的进行回调        if type(i) is list:          tmp_index = whole_v.index(i)+1          return git_callback(whole_v, whole_v[whole_v.index(i)], whole_v[tmp_index:])        else:          # 打印依赖、版本号 负责人 开始          print proj_value+i.split()+['start']    else:      # 如果负责人后跟的组件这种格式的列表数据为空      # 也就是只有依赖和版本号列表数据,负责人为空,就打印依赖版本号      ver = proj_value      owner = name_value      if type(owner[0]) is unicode:        return git_callback(whole_v, ver, owner)      else:        print ver        # 这里是为了判断是不是到列表的最后一位        # 如果是最后一个值,且不是字符串的Unicode,而是列表        # 就直接打印出项目        if whole_v.index(owner[0]) == len(whole_v)-1:          # 打印最后一个值          print whole_v[-1:]        else:          # 这里比较绕,打印调试吧...          new_ver = whole_v[whole_v.index(ver)+1]          owner = whole_v[whole_v.index(ver)+2:]          return git_callback(whole_v, new_ver, owner)  except IndexError as e:    print proj_value    print egit_callback(a, your_pro, tmp)

demo的output:

Boom:git_response pirogue$ python test.py[u'tool-1', u'1.9.13', u'xiaowang', 'start'][u'tool-1', u'1.9.13', u'xiaoqu', 'start'][u'tool-2', u'1.9.23'][u'tool-3', u'1.9.33'][u'tool-4', u'1.9.43', u'pi', 'start'][u'tool-5', u'1.9.53']list index out of range

python的多线程

下面的代码是从主程序中,摘取出来的代码片段

from multiprocessing.dummy import Pool as ThreadPool# 判断git查询返回的依赖数据格式不唯一的回调def git_callback(whole_v, proj_value, name_value, git_cookie):  #   whole_v = whole_v  list_git = []  if name_value:    # print name_value    for i in name_value:      # print i      if i:        if type(i) is list:          tmp_index = whole_v.index(i)+1          return git_callback(whole_v, whole_v[whole_v.index(i)], whole_v[tmp_index:], git_cookie)        else:          git_cookie = str(git_cookie.split()[0])+' '+str(git_cookie.split()[1])          list_git.append(tuple(git_cookie.split("?")+i.split()))          print list_git          pool = ThreadPool(100)          result = pool.map(pool_git, list_git)          print result          pool.close()          pool.join()            else:    print proj_value            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表