首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python多线程并行执行两个函数,并获取线程返回结果

Python多线程并行执行两个函数,并获取线程返回结果

作者头像
用户7886150
修改2020-12-01 17:59:04
修改2020-12-01 17:59:04
3K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 在Python中返回多个值

本人使用场景是,获取用户数据,然后插入到库中,并返回查询该用户的相关结果,实际上包含两个操作: 

1.插入  无返回值 2.查询,有返回值。这两个操作没有依赖关系,就是不插入也可以返回查询结果,为什么选择并行,是因为插入操作耗时,如果是串行计算会影响查询返回时间。 

实现demo如下,使用Python3实现: 

# -*- coding: utf-8 -*-

"""

@author: JiaWei Tian

"""

# thread_test  2019/3/6 8:37 PM

import threading

import time

class MyThread(threading.Thread):

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

        threading.Thread.__init__(self)

        self.name = name

        self.func = func

        self.args = args

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

    def get_result(self):

        try:

            return self.result

        except Exception:

            return None

def one():

    time.sleep(5)

    print('one', '111')

def two(i):

    a = i+3

    print('two', a)

    return a

def get_result(a):

    threads = []  # 定义一个线程池

    t = MyThread(two, (a,), two.__name__)

    t1 = threading.Thread(target=one)  # 建立一个线程并且赋给t1,这个线程指定调用方法one,并且不带参数

    threads.append(t)  # 把t1线程装到threads线程池里

    # t2 = threading.Thread(target=two, args=(a,))

    threads.append(t1)

    t.start()

    b = threads[0].get_result()

    print('result',b)

    t1.start()

    return b

if __name__ == "__main__":

    # a = 1

    b = get_result(122)

    print('b result', b)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档