为什么池要多次运行整个文件?

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方法,如果需要,您也可以将其导入到另一个脚本中。

这篇关于为什么池要多次运行整个文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)