簡體   English   中英

__main__ 中的多處理和池 - 如何在 __main__ 之外獲取 output?

[英]Multiprocessing & Pool in __main__ - how to get the output outside the __main__?

基於這個答案( https://stackoverflow.com/a/20192251/9024698 ),我必須這樣做:

from multiprocessing import Pool

def process_image(name):
    sci=fits.open('{}.fits'.format(name))
    <process>

if __name__ == '__main__':
    pool = Pool()                         # Create a multiprocessing Pool
    pool.map(process_image, data_inputs)  # process data_inputs iterable with pool

多處理一個for循環。

但是,我想知道,如果我願意,我怎樣才能得到這個和進一步處理的 output?

應該是這樣的:

if __name__ == '__main__':
    pool = Pool()                         # Create a multiprocessing Pool
    output = pool.map(process_image, data_inputs)  # process data_inputs iterable with pool
    # further processing

但這意味着我必須將我的代碼的所有 rest 放在__main__中,除非我將所有內容都寫在由__main__調用的函數中?

__main__的概念一直讓我很困惑。

if __name__ == '__main__':字面上只是“如果此文件作為腳本運行,而不是作為模塊導入,則執行此操作”。 __name__是一個隱藏變量,如果它作為腳本運行,它會被設置為'__main__' 為什么它以這種方式工作超出了本次討論的 scope 但足以說明它與 python 如何從上到下評估源文件有關。

換句話說,您可以將其他兩行放在您想要的任何位置 - 在 function 中,可能是您在程序的其他地方調用的。 您可以從該 function 返回output ,或者對其進行其他處理,等等,無論您碰巧需要什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM