[英]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.