Why does pool run the entire file multiple times?(为什么池要多次运行整个文件?)
本文介绍了为什么池要多次运行整个文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试理解此Python2.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
我的问题是:
A)为什么时间在开始和结束时打印三次?我本以为它会打印开始时间,然后打印结束时间。
B)真正的问题--如何让它多次运行一个命令,而同时运行所有其他命令?
推荐答案
为每个进程导入__main__
模块。在导入时,会再次执行整个文件。在python3上,如果删除if __name__ == '__main__'
,将会出现无限循环,因为该文件是递归调用的。
对于真正的问题:
在python脚本中,我通常会尽量避免在全局范围内执行除函数定义以外的任何语句或变量。我使用下面的模板作为所有python脚本的模板。
import sys
def main(argv):
#main logic here
if __name__ == '__main__':
main(sys.argv)
当您有一个具有可重用函数的脚本时,即使它有一个Main方法,如果需要,您也可以将其导入到另一个脚本中。
这篇关于为什么池要多次运行整个文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么池要多次运行整个文件?
基础教程推荐
猜你喜欢
- 合并具有多索引的两个数据帧 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01