python创建有返回值的多线程子类

threading 模块作为python的一个多线程的模块,本身并没有返回值,我们可以通过代码中的方法创建有返回值的子类。

# python version 3.9
import threading 

class MyThread(threading.Thread):
	def __init__(self, group=None, target=None, name=None, args=()):
	"""
	传入的target是有返回值的函数
	args为需要传入的变量数组,如果需要传入多个变量,也可以写成被注释掉的内容
	"""
		super().__init__(target=target, args=args)
		self._result = []

	# 重写run函数,此函数被start函数调用
	def run(self):
		try:
			if self._target:
				# self._result = self._target(*self._args)
				self._result = self._target(self._args)
		finally:
			del self._target, self._args
	
	def get_result(self):
		MyThread.join(self)
		try:
			return self._result
		except Exception:
			return None

使用concurrent中的futures进行多线程的处理。
可以使用比较简单的方法

from concurrent import futures

def func(i):
	if i == 1:
		return 'hello'
	if i == 2:
		return 'What\'s your name?'

if __name__ == '__main__':
	with futures.ThreadPoolExecutor(max_workers=2) as executor:
		future1 = executor.submit(func, 1)
        future2 = executor.submit(func, 2)
		
		a = future1.result()
		b = future2.reuslt()

		print(a, b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值