python 多工中獲取返回值

2021-09-12 19:15:02 字數 2297 閱讀 1288

python 多執行緒基於 較為底層的thread模組. 使用中, python 的 threading

模組是對thread做了⼀些包裝的,可以更加⽅便的被使⽤ . 但是直接通過threading類呼叫目標函式, 無法獲得目標函式的返回值, 因此需要通過重寫 threading的 thread類來獲取返回值. 資料可見的幾種方法如下:

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

# @time : 2019/3/17 15:48

# @author : damon_duanlei

# @filename : mythread_01.py

# @blogsaddr :

import threading

import time

class

mythread

(threading.thread)

:def

__init__

(self, func, args=()

):super

(mythread, self)

.__init__(

) self.func = func

self.args = args

self._result =

none

defrun

(self)

: self._result = self.func(

*self.args)

defget_result

(self)

:try

:return self._result

except exception:

return

none

也可通過重寫 thread 的 join 方法來獲取:

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

# @time : 2019/3/17 15:48

# @author : damon_duanlei

# @filename : mythread_01.py

# @blogsaddr :

import threading

import time

class

mythread

(threading.thread)

:def

__init__

(self, func, args=()

):super

(mythread, self)

.__init__(

) self.func = func

self.args = args

self._result =

none

defrun

(self)

: self._result = self.func(

*self.args)

defjoin

(self)

: threading.thread.join(self)

return self._result

另,還見過在初始化自定義類時就呼叫目標函式獲取返回值, 幾種方法各有利弊, 可根據實際應用場景進行選擇

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

# @time : 2019/3/17 15:48

# @author : damon_duanlei

# @filename : mythread_01.py

# @blogsaddr :

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)

defget_result

(self)

:try

:return self.result

except exception:

return

none

未完待續…

Python 獲取多執行緒獲取返回值

1.通過重寫thread類,自定義乙個get result 方法 重新定義帶返回值的執行緒類 from threading import thread from time import sleep,time class mythread thread def init self,func,args ...

Python多執行緒獲取返回值

在使用多執行緒的時候難免想要獲取其操作完的返回值進行其他操作,下面的方法以作參考 一,首先重寫threading類,使其滿足呼叫特定的方法獲取其返回值 import threading class mythread threading.thread 重寫多執行緒,使其能夠返回值 def init s...

python 獲取程序的返回值

使用multiprocessing的manager下的list,dict等模組接收返回值 示例如下 import multiprocessing from multiprocessing import manager defworker procnum,returns worker function...