Python如何获取多线程返回结果
作者:vv安的浅唱 发布时间:2024-01-01 23:34:28
标签:Python,多线程,返回结果
Python获取多线程返回结果
在 Python 的多线程中,有时候我们会需要每一个线程中返回的结果。
然而,在经过我的多番尝试、以及网上各种博客显示,在 Python3 中是无法获得单个线程中返回的结果的,因此我们需要定义一个类来实现这个过程
这个类的定义如下:
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 None
然后我们就可以通过调用这个类里的函数,get_result() 来获取每个线程中返回的结果了,以下是一个测试的实例,多线程调用一个相加的函数,经过实验,是能够获取到所有线程返回的结果的。
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
except Exception:
return None
def add(num):
result = num + 5
return result
if __name__ == '__main__':
data = []
threads = []
nums = [1, 2, 3]
for num in nums:
t = MyThread(add, args = (num, ))
threads.append(t)
t.start()
for t in threads:
t.join()
data.append(t.get_result())
print(data)
Python多线程实现
from threading import Thread
def func():
for i in range(100):
print('func',i)
if __name__ == '__main__':
t=Thread(target=func)
t.start()
for i in range(100):
print('main',i)
线程池:
一次性开辟一些线程,我们用户直接给线程池子提交任务,线程任务的调度交给线程池。
from concurrent.futures import ThreadPoolExecutor
def func(name):
for i in range(20):
print(name,i)
if __name__ == '__main__':
#创建线程池
with ThreadPoolExecutor(10) as t:
for i in range(10):
t.submit(func,name=f'线程{i}')
print('over')#等待线程全部执行完毕,才会执行该行代码
来源:https://blog.csdn.net/weixin_43354181/article/details/85933378
0
投稿
猜你喜欢
- 快排是python经典算法之一。1、下面讲解的是什么是快排和快排的图示。2、快排是一种解决排序问题的运算方法。3、快排的原理:在数组中任意选
- 1. SQL Server导入导出向导,这种方式是最方便的.导入向导,微软提供了多种数据源驱动,包括SQL Server Native Cl
- 在python中可以通过内置函数int()函数进行二进制转十进制;int()函数可以将一个指定进制的数字型字符串或者十进制数字转化为整型。P
- 一、循环语句介绍 1.循环语句理解循环语句允许我们执行一个语句或语句组多次,可以让我们的代码重复的去执行。2.循环语句示意图二、循
- 利用pygame实现了简易版飞机大战。源代码如下:# -*- coding:utf-8 -*-import pygameimport sys
- 前言正常图片转化成素描图片无非对图片像素的处理,矩阵变化而已。目前很多拍照修图App都有这一功能,核心代码不超30行。如下利用 Python
- 本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下#!/usr/bin/env python# This is
- 需求:用的是django的框架,想显示一个基本固定的页面,用到了form_layout上图的ROW中添加的是model中的字段名,可以显示对
- PHP天然就对MySQL有良好的支持,但是想要用PHP对SQL Server进行操作,则需要花点时间了。今天刚好团队里的一个项目需要用PHP
- 前言在本文中,我们将介绍10个示例,以掌握如何使用用于Python的Seaborn库创建图表。任何数据产品的第一步都应该是理解原始数据。对于
- 一、说明 关于matplotlib的scatter函数有许多活动参数,如果不专门注解,是
- 插入一条记录后,如何得到最新的自动增加ID?我们要用到SQL Server的@@IDENTITY。它能够记录下系统最近使用的一个IDENTI
- 以下是作者在学习Python中django框架时的学习笔记,并把测试的代码做了详细分析,最后还附上了学习心得,值得大家学习。URL配置(UR
- MYSQL与SQLserver之间存储过程的转换首先先放两个存储过程来进行对比mysql存储过程CREATE DEFINER=`root`@
- 1、安装scikit-learn1.1Scikit-learn 依赖Python (>= 2.6 or >= 3.3),NumP
- 针对之前安装mysql的笔记进行了总结,分享给大家。1.下载下载地址:http://dev.mysql.com/downloads/mysq
- 设计页面时,经常会从一个页面打开一个子窗口以供浏览者查看。通常,这种子窗口中的内容一经浏览者看过,对于浏览者而言就不再需要,而他们常常会忘记
- 楔子在 TensorFlow 中,可以给一个 tensor 增加一个维度、删除一个维度,那么在 Numpy 中该怎么呢?删除维度、增加维度先
- 1、TCP连接的建立方法客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较。步骤TCP客户端TCP服务器
- 1. 背景在软件需求、开发、测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据。