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方法,如果需要,您也可以将其导入到另一个脚本中。
这篇关于为什么池要多次运行整个文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么池要多次运行整个文件?


猜你喜欢
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01