獲取Python多執行緒的返回值

2021-08-19 03:59:17 字數 2255 閱讀 2969

用python多執行緒時,遇到需要獲取每個執行緒返回值的問題,經查資料學習總結如下:

python中使用執行緒有兩種方式:用方法包裝執行緒和用類包裝執行緒

方法

一、用方法包裝執行緒

thread

.start_new_thread

(function

,args

[,kwargs

])

-function 表示執行緒需要執行的函式

-args 表示傳入的引數

# coding:utf-8

import thread, time

# 為執行緒定義乙個函式

def print_time(threadname, delay):

count = 0

while count < 5:

time.sleep(delay)

count += 1

print "%s: %s" % (threadname, time.ctime(time.time()))

# 建立兩個執行緒

try:

thread.start_new_thread(print_time, ("thread-1", 2,))

thread.start_new_thread(print_time, ("thread-2", 3,))

except:

print "error: unable to start thread"

while 1:

pass

執行結果如下:

thread-1: sat apr 21 18:28:51 2018

thread-2: sat apr 21 18:28:52 2018

thread-1: sat apr 21 18:28:53 2018

thread-2: sat apr 21 18:28:55 2018

thread-1: sat apr 21 18:28:55 2018

thread-1: sat apr 21 18:28:57 2018

thread-2: sat apr 21 18:28:58 2018

thread-1: sat apr 21 18:28:59 2018

thread-2: sat apr 21 18:29:01 2018

thread-2: sat apr 21 18:29:04 2018

方法

二、用類包裝執行緒

乙個小demo如下,mythread.py是執行緒類,main.py中有乙個加法add()方法,例項中將add()方法和引數傳遞給多執行緒類處理,並通過執行緒的get_result()方法獲取執行的結果。

# coding:utf-8

import threading, time

# mythread.py執行緒類

class mythread(threading.thread):

def __init__(self, func, args=()):

super(mythread, self).__init__()

self.func = func

self.args = args

def run(self):

time.sleep(2)

self.result = self.func(*self.args)

def get_result(self):

threading.thread.join(self) # 等待執行緒執行完畢

try:

return self.result

except exception:

return none

# coding:utf-8

import threadclass

# main.py

def add (a, b):

return a + b

if __name__=="__main__":

list = [23, 89]

# 建立4個執行緒

for i in xrange(4):

task = threadclass.mythread(add, (list[0], list[1]))

task.start()

print(task.get_result())

執行結果:

112112

112112

Python多執行緒獲取返回值

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

Python多執行緒獲取返回值

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

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

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