我试图了解此Python 2.7.5示例脚本的输出:
import time from multiprocessing import Pool print(time.strftime('%Y-%m-%d %H:%M', time.localtime(time.time()))) props2=[ '170339', '170357', '170345', '170346', '171232', '170363', ] def go(x): print(x) if __name__ == '__main__': pool = Pool(processes=3) pool.map(go, props2) print(time.strftime('%Y-%m-%d %H:%M', time.localtime(time.time())))
这产生输出:
2015-08-06 10:13 2015-08-06 10:13 2015-08-06 10:13 170339 170357 170345 170346 171232 170363 2015-08-06 10:13 2015-08-06 10:13 2015-08-06 10:13
2015-08-06 10:13
170339
170357
170345
170346
171232
170363
我的问题是:
A)为什么时间在开始和结束时打印三遍?我本来希望它可以打印开始时间,然后打印结束时间。
B)真正的问题-如何使它多次运行一个命令,而一次运行所有其他命令?
Python__main__为每个进程导入模块。导入时,将再次执行整个文件。在python 3上,如果删除,if __name__ == '__main__'则将得到一个无限循环,因为该文件被递归调用。
__main__
if __name__ == '__main__'
对于真正的问题:
在python脚本中,我通常会尝试避免在全局范围内执行除函数定义以外的任何语句或变量。我将以下内容用作所有python脚本的模板。
import sys def main(argv): #main logic here if __name__ == '__main__': main(sys.argv)
如果您的脚本具有可重复使用的功能,即使它具有main方法,也可以根据需要将其导入另一个脚本中。