[英]multiprocessing pool map each worker running code outside __main__ block
[英]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.