iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python多线程中获取函数返回值的方法有哪些
  • 125
分享到

python多线程中获取函数返回值的方法有哪些

2023-07-05 07:07:40 125人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python多线程中获取函数返回值的方法有哪些”,在日常操作中,相信很多人在Python多线程中获取函数返回值的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python多线程中获

这篇文章主要介绍“python多线程中获取函数返回值的方法有哪些”,在日常操作中,相信很多人在Python线程中获取函数返回值的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python多线程中获取函数返回值的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

方法一:使用队列

import queueimport threadingimport sysimport time q=queue.Queue()def func1(x,y):    func_name = sys._getframe().f_code.co_name # 获取函数名    print("%s run ....." % func_name)    q.put((x+y,func_name)) def func2(x,y):    func_name = sys._getframe().f_code.co_name    print("%s run ...." %func_name)    q.put((x-y,func_name)) if __name__ == "__main__":    result=[]    t1=threading.Thread(target=func1,name="thread1",args=(10,5))    t2=threading.Thread(target=func2,name="thread2",args=(20,1))    print('*'*20)    t1.start()    t2.start()    t1.join()    t2.join()    while not q.empty():# 队列为空返回True,反之False        result.append(q.get())    for item in result:        if item[1] == func1.__name__:            print("%s return value is: %s" %(item[1],item[0]))        elif item[1] == func2.__name__:            print("%s return value is: %s" %(item[1],item[0]))

运行结果:
********************
func1 run .....
func2 run ....
func1 return value is: 15
func2 return value is: 19

方法二: 封装 threading.Thread,重写 run 方法

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        except Exception:            return Nonedef foo(a,b,c):    time.sleep(1)    return a*2,b*2,c*2li = []for i in range(4):    t=mythread(foo,args=(i,i+1,i+2))    li.append(t)    t.start()for t in li:    t.join()    print(t.get_result()) # 运行结果(0, 2, 4)(2, 4, 6)(4, 6, 8)(6, 8, 10)

方法三:使用进程池

def func(msg):    print("msg:",msg)    time.sleep(3)    print("end")    return "done" + msgif __name__ == "__main__":    pool = multiprocessing.Pool(processes=4)    result = []    for i in range(3):        msg = "hello %d" %i        result.append(pool.apply_async(func,(msg,)))    pool.close()    pool.join()    for res in result:        print(res)        print(":::",res.get())# 运行结果msg: hello 0msg: hello 1msg: hello 2endendend<multiprocessing.pool.ApplyResult object at 0x0000027BF6B3F0D0>::: donehello 0<multiprocessing.pool.ApplyResult object at 0x0000027BF6F4FDF0>::: donehello 1<multiprocessing.pool.ApplyResult object at 0x0000027BF6F4FDC0>::: donehello 2

到此,关于“python多线程中获取函数返回值的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: python多线程中获取函数返回值的方法有哪些

本文链接: https://www.lsjlt.com/news/350443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python多线程中获取函数返回值的方法有哪些
    这篇文章主要介绍“python多线程中获取函数返回值的方法有哪些”,在日常操作中,相信很多人在python多线程中获取函数返回值的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python多线程中获...
    99+
    2023-07-05
  • python多线程中获取函数返回值的三种方法
    目录方法一:使用队列方法二: 封装 threading.Thread,重写 run 方法方法三:使用进程池方法一:使用队列 import queue import threading...
    99+
    2023-03-01
    python多线程获取函数返回值 python多线程获取返回值
  • Python获取线程返回值的方式有哪些
    这篇文章主要讲解了“Python获取线程返回值的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python获取线程返回值的方式有哪些”吧!方法一:使用全局变量的列表,来保存返回值r...
    99+
    2023-07-06
  • python使用threading获取线程函数返回值的实现方法
    threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组,线程也不能被停止、暂停、恢复、中断。 threading模块提供的类: ...
    99+
    2022-06-04
    线程 函数 返回值
  • Python获取协程返回值的方式有哪些
    这篇文章主要介绍“Python获取协程返回值的方式有哪些”,在日常操作中,相信很多人在Python获取协程返回值的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python获取协程返回值的方式有哪些...
    99+
    2023-06-22
  • python获取多线程及子线程的返回值
    最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threadin...
    99+
    2022-06-04
    线程 多线程 返回值
  • Python 获取线程返回值的三种方式
    提到线程,你的大脑应该有这样的印象:我们可以控制它何时开始,却无法控制它何时结束,那么如何获取线程的返回值呢?今天就分享一下自己的一些做法。方法一:使用全局变量的列表,来保存返回值ret_values = [] def thread_fu...
    99+
    2023-05-14
    Python CPython 返回值
  • python函数返回多个值的方法
    这篇文章主要介绍“python函数返回多个值的方法”,在日常操作中,相信很多人在python函数返回多个值的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python函数返回多个值的方法”的疑惑有所帮助!...
    99+
    2023-06-20
  • 详解Python获取线程返回值的三种方式
    目录方法一方法二方法三最后的话提到线程,你的大脑应该有这样的印象:我们可以控制它何时开始,却无法控制它何时结束,那么如何获取线程的返回值呢?今天就分享一下自己的一些做法。 方法一 使...
    99+
    2022-11-11
  • python获取cookie值的方法有哪些
    在Python中获取cookie值的方法有以下几种:1. 使用requests库:可以通过`response.cookies`获取服...
    99+
    2023-10-11
    python
  • Java多线程之 FutureTask:带有返回值的函数定义和调用方式
    FutureTask 返回值的函数定义和调用 使用Runnable接口定义的任务是没有返回值的。很多时候,我们是有返回值的,为了解决这个问题,Java提供了Callable接口,可以...
    99+
    2022-11-12
  • JAVA中获取文件MD5值的方法有哪些
    在Java中,获取文件的MD5值的方法主要有以下几种:1. 使用java.security.MessageDigest类:可以使用M...
    99+
    2023-08-11
    JAVA
  • php中获取多个数组差集的方法有哪些
    这篇文章主要介绍“php中获取多个数组差集的方法有哪些”,在日常操作中,相信很多人在php中获取多个数组差集的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中获取多个数组差集的方法有哪些”的疑...
    99+
    2023-06-25
  • python实现多线程的方法有哪些
    在Python中,实现多线程的方法有以下几种方式:1. 使用`threading`模块:`threading`模块是Python标准...
    99+
    2023-08-15
    python
  • Nodejs中获取参数的方法有哪些
    这篇文章给大家分享的是有关Nodejs中获取参数的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实现...
    99+
    2023-06-15
  • python的多线程创建的方法有哪些
    本篇内容介绍了“python的多线程创建的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python多线程一、线程的概念线程是CP...
    99+
    2023-07-04
  • 从json中获取数据的方法有哪些
    从JSON中获取数据的方法主要有以下几种:1. 使用编程语言的内置JSON解析器:大多数编程语言都提供了内置的JSON解析器,可以通...
    99+
    2023-08-18
    json
  • 微信小程序picker选择器获取值的方法有哪些
    这篇文章主要介绍了微信小程序picker选择器获取值的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序picker选择器获取值的方法有哪些文章都会有所收获,下面我们一起来看看吧。想要实现的效果...
    99+
    2023-07-05
  • java中有哪些实现多线程的方法
    这篇文章将为大家详细讲解有关java中有哪些实现多线程的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基...
    99+
    2023-06-14
  • qt多线程传递参数的方法有哪些
    在Qt中,有多种方法可以在多线程之间传递参数。以下是其中一些常用的方法:1. 构造函数传递参数:在创建新的线程对象时,通过构造函数将...
    99+
    2023-09-13
    qt
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作