第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何從python中的線程獲得返回值?

如何從python中的線程獲得返回值?

慕姐8265434 2019-06-20 11:18:54
如何從python中的線程獲得返回值?功能foo下面返回一個(gè)字符串'foo'..我怎樣才能得到價(jià)值'foo'哪個(gè)是從線程的目標(biāo)返回的?from threading import Threaddef foo(bar):     print('hello {}'.format(bar))     return 'foo'thread = Thread(target=foo, args=('world!',))thread.start()return_value = thread.join()上面所示的“一種顯而易見的方法”是行不通的:thread.join()退回來None.
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

我看到的一種方法是將可變對象(如List或字典)傳遞給線程的構(gòu)造函數(shù),以及某種類型的索引或其他標(biāo)識(shí)符。然后,線程可以將其結(jié)果存儲(chǔ)在該對象的專用槽中。例如:

def foo(bar, result, index):
    print 'hello {0}'.format(bar)
    result[index] = "foo"from threading import Threadthreads = [None] * 10results = [None] * 10for i in range(len(threads)):
    threads[i] = Thread(target=foo, args=('world!', results, i))
    threads[i].start()# do some other stufffor i in range(len(threads)):
    threads[i].join()print " ".join(results)  # what sound does a metasyntactic locomotive make?

如果你真的想join()若要返回被調(diào)用函數(shù)的返回值,可以使用Thread子類如下所示:

from threading import Threaddef foo(bar):
    print 'hello {0}'.format(bar)
    return "foo"class ThreadWithReturnValue(Thread):
    def __init__(self, group=None, target=None, name=None,
                 args=(), kwargs={}, Verbose=None):
        Thread.__init__(self, group, target, name, args, kwargs, Verbose)
        self._return = None
    def run(self):
        if self._Thread__target is not None:
            self._return = self._Thread__target(*self._Thread__args,
                                                **self._Thread__kwargs)
    def join(self):
        Thread.join(self)
        return self._return

twrv = ThreadWithReturnValue(target=foo, args=('world!',))twrv.start()print twrv.join()   # prints foo

因?yàn)槟承┟Q損壞,所以會(huì)變得有些毛茸茸的,并且它訪問特定于以下的“私有”數(shù)據(jù)結(jié)構(gòu)。Thread執(zhí)行.。但很管用。

用于丙酮3

class ThreadWithReturnValue(Thread):
    def __init__(self, group=None, target=None, name=None,
                 args=(), kwargs={}, Verbose=None):
        Thread.__init__(self, group, target, name, args, kwargs)
        self._return = None
    def run(self):
        print(type(self._target))
        if self._target is not None:
            self._return = self._target(*self._args,
                                                **self._kwargs)
    def join(self, *args):
        Thread.join(self, *args)
        return self._return


查看完整回答
反對 回復(fù) 2019-06-20
  • 3 回答
  • 0 關(guān)注
  • 2049 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號