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...