【Python】多线程获取子任务的返回值

python多线程获取子任务的返回值

 

如果多条输入数据,需要预先按需要的线程数拆分数据,单独分别输入到不同的线程中

 

eg:

import time

import requests

import threading

class MyThread(threading.Thread):

 

    def __init__(self,func,args=()):

        super(MyThread,self).__init__()

        self.func = func

        self.args = args

 

    def run(self):

        self.result = self.func(*self.args)

 

    def get_result(self):

        try:

            return self.result  # 如果子线程不使用join方法,此处可能会报没有self.result的错误

        except Exception:

            return None

   

#进程函数

def func(districtId,pageIndex,locale):

    xxxxx

    return list_poiid

 

def multi_thread_func(districtId,locale,num_thread):

    list_poiid_inpage = []

    for j in range(0,math.ceil(total_page_target/num_thread)):

        st = time.time()

        li = []

        for i in range(1,num_thread+1 ):  # 如果多条输入数据,需要预先按需要的线程数拆分数据,单独分别输入到不同的线程中

            if (num_thread*j+i)<= 15:

                t = MyThread(func, args=(districtId, 4*j+i, locale))

                li.append(t)

                t.start()

        for t in li:

            t.join()  # 一定要join,不然主线程比子线程跑的快,会拿不到结果

            list_poiid_inpage.append(t.get_result())

        et = time.time()

        return list_poiid_inpage

 

参考文献:

python多线程详解

https://www.cnblogs.com/luyuze95/p/11289143.html

获取多线程子任务的返回值

https://blog.csdn.net/u012050154/article/details/80032072

https://www.jianshu.com/p/411bbbc73003

https://www.oudahe.com/p/41926/

线程阻塞

https://blog.csdn.net/sunshine_2211468152/article/details/87299708

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值