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

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

Python進(jìn)程池非守護(hù)進(jìn)程?

Python進(jìn)程池非守護(hù)進(jìn)程?

開心每一天1111 2019-10-08 15:26:19
是否可以創(chuàng)建非守護(hù)進(jìn)程的python池?我希望一個池能夠調(diào)用內(nèi)部有另一個池的函數(shù)。我想要這個,因為守護(hù)進(jìn)程無法創(chuàng)建進(jìn)程。具體來說,它將導(dǎo)致錯誤:AssertionError: daemonic processes are not allowed to have children例如,考慮這樣一個場景,其中function_a有一個運(yùn)行的池,function_b而有一個運(yùn)行的池function_c。該功能鏈將失敗,因為function_b它正在守護(hù)進(jìn)程中運(yùn)行,并且守護(hù)進(jìn)程無法創(chuàng)建進(jìn)程。
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗 獲得超6個贊

在多處理模塊有一個漂亮的界面使用與進(jìn)程池或線程。根據(jù)您當(dāng)前的用例,您可能會考慮將其multiprocessing.pool.ThreadPool用于外部Pool,這將導(dǎo)致線程(允許從內(nèi)部生成進(jìn)程)而不是進(jìn)程。


它可能受到GIL的限制,但是在我的特殊情況下(我都對它們進(jìn)行了測試),此處Pool創(chuàng)建的外部進(jìn)程的啟動時間遠(yuǎn)遠(yuǎn)超過了解決方案的啟動時間。ThreadPool


這真的很容易掉Processes的Threads。在此處或此處閱讀有關(guān)如何使用ThreadPool解決方案的更多信息。


查看完整回答
反對 回復(fù) 2019-10-08
?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊

我必須在Python 3.7中使用非守護(hù)程序池,并最終改編了接受的答案中發(fā)布的代碼。下面是創(chuàng)建非守護(hù)程序池的代碼段:


class NoDaemonProcess(multiprocessing.Process):

    @property

    def daemon(self):

        return False


    @daemon.setter

    def daemon(self, value):

        pass



class NoDaemonContext(type(multiprocessing.get_context())):

    Process = NoDaemonProcess


# We sub-class multiprocessing.pool.Pool instead of multiprocessing.Pool

# because the latter is only a wrapper function, not a proper class.

class MyPool(multiprocessing.pool.Pool):

    def __init__(self, *args, **kwargs):

        kwargs['context'] = NoDaemonContext()

        super(MyPool, self).__init__(*args, **kwargs)

由于的當(dāng)前實現(xiàn)multiprocessing已被廣泛地重構(gòu)為基于上下文,因此我們需要提供一個NoDaemonContext具有NoDaemonProcessas屬性的類。MyPool然后將使用該上下文,而不是默認(rèn)上下文。


就是說,我應(yīng)該警告這種方法至少有兩個警告:


它仍然取決于multiprocessing軟件包的實現(xiàn)細(xì)節(jié),因此可能隨時中斷。

為什么有正當(dāng)?shù)睦碛蒻ultiprocessing說得那么難用非惡魔的過程,其中有許多是解釋在這里。我認(rèn)為最引人注目的是:

至于允許子線程使用子進(jìn)程來產(chǎn)生自己的子進(jìn)程,如果父線程或子線程在子進(jìn)程完成并返回之前終止,則可能會產(chǎn)生一些僵尸“孫子”。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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