`
houzhaowei
  • 浏览: 502584 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

后台运行python程序 遇到缓冲区问题

阅读更多

环境:linux

 

一段执行时间很长的程序(用python做hive客户端执行mapreduce) 在linux后台执行,把结果输出到某文件:

 

 

python xxx.py > log.log& 

 

 遇到的问题,程序没报错,文件里却什么都没有,没有输入进去。为什么呢?

于是我首先尝试用:

 

 

nohup python xxx.py > log.log &

 

预料之中 还是不行。

 

于是我做实验:

 

写了个test.py:

 

import sys,time
from threading import Thread
class worker(Thread):
     def run(self):
         for x in xrange(0,111):
             print x
             time.sleep(1)
def run():
     worker().start()
if __name__ == '__main__':
    run()

 每秒打印一次

我直接用python text.py 执行  没问题  每秒输出一个数

但我在后台执行:

 

python test.py > log.log& 

 

还是不行。开始不输出  直到程序执行完,一次性的写到log.log文件了。

为什么呢? 

原因可能是python 的print 先写到缓冲区了,还没flush到文件。

于是加了一行“ sys.stdout.flush() ” --在每次print后都flush一次。:

 

import sys,time
from threading import Thread
class worker(Thread):
     def run(self):
         for x in xrange(0,111):
             print x
             sys.stdout.flush()  
             time.sleep(1)
def run():
     worker().start()
if __name__ == '__main__':
    run()
 

问题解决。

分享到:
评论

相关推荐

    Python运行不显示DOS窗口的解决方法

    然而,在编写或运行Python脚本时,可能会遇到一些问题。比如,当我们运行Python程序时,通常会弹出一个DOS窗口。但在某些情况下,我们可能不希望显示这个DOS窗口,而只希望程序在后台静默执行。本文将介绍两种方法来...

    Apache运行python程序的必须组件

    当遇到问题时,mod_wsgi提供了丰富的日志记录功能,可以帮助开发者调试应用程序和服务器配置。可以通过设置日志级别、错误日志位置等参数来调整日志输出。 **安全性和性能优化** 运行Python程序时,需要考虑安全性...

    python后台windows窗口自动截图

    Python 后台Windows窗口自动截图是一项实用的技术,它允许开发者编写程序在计算机后台无用户交互的情况下捕获指定窗口的图像。这项技术在多种场景下都可能有用,例如监控特定应用程序的状态,或者像在这个例子中,...

    Linux后台运行Python程序的几种方法讲解

    1.第一种方法是直接用unhup命令来让程序在后台运行,命令格式如下: unhup python 文件名.py (> ***.log )& 在这个命令中,python指定我们要执行的文件为python文件,后面的文件名.py即是我们要执行的文件。括号...

    Python程序设计(第二版)

    书中会教授如何读写文件,处理文本和二进制数据,以及如何进行错误处理,确保程序在遇到问题时能优雅地处理。 Python还提供了丰富的数据结构,如列表、元组、字典和集合。这些内容会帮助你更好地组织和管理数据。...

    头歌python程序设计答案.rar

    这份文档可能是对《头歌Python程序设计》这本书的配套练习题或测试题的解决方案,旨在帮助读者巩固所学知识,解决在编程实践中遇到的问题。 Python是一种高级、解释型、交互式和面向对象的脚本语言。其简洁明了的...

    《Python程序设计与算法基础教程(第二版)》江红余青松全部章节的课后习题,上机实践,课 .pdf

    3. **在资源管理器中运行Python程序**: - 可以通过PowerShell或cmd命令行直接运行Python脚本,如`python hello.py`。如果脚本和命令行在同一目录下,可以直接输入脚本名,否则需要指定完整路径。 4. **命令行参数...

    python程序设计(浙江大学).rar

    python程序设计PPT(浙江大学python课件)对应慕课该课程PPT。 包含9章内容: python语言介绍; 语句; 字符串,列表,元组; 集合,字典; 函数,命名空间和作用域; 文件读写操作; Web应用; 网络爬虫;等

    Python后台静默打印PDF文件附属执行程序

    本资源提供的"Python后台静默打印PDF文件附属执行程序"正是针对这一需求的解决方案,包含两个关键组件:Ghostscript和Gsprint。 **Ghostscript** 是一个开源的软件,它能够解析和处理PostScript以及PDF文件。它的...

    225-运行程序-01-增加Shebang符号直接运行Python程序.flv

    225-运行程序-01-增加Shebang符号直接运行Python程序.flv

    win7解决python打包EXE不能运行升级包.rar

    在Windows 7操作系统中,使用Python进行程序开发后,我们常常需要将代码打包成可执行文件(EXE),以便在没有Python环境的机器上运行。然而,在某些情况下,打包后的EXE文件可能无法正常运行,这通常是由于系统兼容...

    Python-用于测量监视和分析在运行的Python程序中Python对象的内存行为的开发工具

    Development tool to measure, monitor and analyze the memory behavior of Python objects in a running Python application.

    python程序设计教程-张莉-江苏省python二级教材-全套PPT

    《Python程序设计教程》是张莉教授为江苏省计算机二级考试编写的教材,旨在帮助考生全面理解和掌握Python编程语言。这套PPT涵盖了从Python基础到高级应用的诸多知识点,旨在为考试提供系统的复习材料。 首先,从第1...

    好玩的python程序的实现(有注释,80多个)

    7. **异常处理**:Python的try-except结构用于处理程序运行时可能出现的错误。程序可能会有处理除零错误、文件未找到错误等例子。 8. **面向对象编程**:虽然初学者可能不会立即接触到,但程序可能包含简单的类定义...

    基于Qt+C++开发一个python编译器,能够编写,运行python程序+源码(毕业设计&课程设计&项目开发)

    基于Qt+C++开发一个python编译器,能够编写,运行python程序+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 该项目利用Qt+C++实现了一个简易的...

    Python程序设计-董付国(第二版)教学课件、代码、课后习题答案.zip

    而源代码示例则是实践编程的最佳实践,通过阅读和运行这些代码,学习者能深入理解Python语法的实际应用,如何组织代码结构,以及如何解决实际问题。此外,对比书中的理论解释和实际代码,有助于培养良好的编程习惯和...

    unigui网页运行Python.7z

    2 程序中的“运行表达式”仅可以运行 2*3*4 这样的表达式,不能运行脚本,运行脚本时,因为print方法没有办法输出到unigui界面,故添加参数 retdata,修改retdata.value来输出信息到unigui界面. 示例脚本 ...

    Python教程-第一个python程序.pdf

    ### Python教程:编写并运行第一个Python程序 #### Python编程语言简介 Python是一种广泛使用的高级编程语言,因其简洁、易读的语法而受到开发者们的青睐。它适用于多种应用场景,包括Web开发、数据分析、人工智能...

    解决python nohup linux 后台运行输出的问题

    总结来说,当使用`nohup`在Linux后台运行Python脚本时,如果发现输出没有正常记录,可以通过添加`-u`参数来禁用Python的输出缓冲,从而确保输出立即写入指定日志文件,避免出现输出空白的问题。同时,合理使用重定向...

    解析PyCharm Python运行权限问题

    先通过 which python 获得 python 指令所在路径: $ which python /usr/bin/python 如上得到了其所在路径是 /usr/bin/python ,因此我创建了一个文件 ~/bin/python-sudo.sh ,然后填入: #!/bin/bash sudo /usr/bin/...

Global site tag (gtag.js) - Google Analytics