相关疑难解决方法(0)

python中的无缓冲的stdout(如在python -u中)来自程序内部

可能重复:
Python输出缓冲

有没有办法从我的代码中获得运行python -u的效果?如果失败了,我的程序可以检查它是否在-u模式下运行并退出并显示错误消息,如果没有?这是在linux上(ubuntu 8.10服务器)

python

53
推荐指数
4
解决办法
5万
查看次数

如何输出到控制台和文件?

我试图在python中找到一种方法将脚本执行日志重定向到文件以及stdoutpythonic方式.有没有简单的方法来实现这一目标?

python

42
推荐指数
5
解决办法
13万
查看次数

Jenkins控制台输出不是实时的

詹金斯很新,我有一个简单但烦人的问题.当我在Jenkins上运行作业(Build)时,我触发ruby命令来执行我的测试脚本.

问题是Jenkins没有从控制台实时显示输出.这是触发日志.

Building in workspace /var/lib/jenkins/workspace/foo_bar
No emails were triggered.
[foo_bar] $ /bin/sh -xe /tmp/hudson4042436272524123595.sh
+ ruby /var/lib/jenkins/test-script.rb
Run Code Online (Sandbox Code Playgroud)

基本上它挂起在此输出上,直到构建完成,而不是显示完整输出.有趣的是,这不是一致的行为,有时它的工作原理应该如此.但大多数时候没有实时控制台输出.

詹金斯版本:1.461

continuous-integration jenkins

36
推荐指数
3
解决办法
3万
查看次数

Python:-u选项的意义?

我在一些python代码中注意到-u用于启动python解释器.我查看了python的手册页,但是我无法从中得到很多.请举个例子.

python

27
推荐指数
2
解决办法
1万
查看次数

Python多线程打印语句延迟到所有线程完成执行

我在下面有一段代码创建了一些执行任务的线程,它本身就能很好地工作.但是我很难理解为什么我在函数中调用的print语句在所有线程完成并print 'finished'调用语句之后才执行.我希望在线程执行时调用它们.有没有简单的方法来实现这一点,为什么这首先以这种方式工作?

def func(param):
    time.sleep(.25)
    print param*2

if __name__ == '__main__':
    print 'starting execution'
    launchTime = time.clock()
    params = range(10)
    pool=multiprocessing.Pool(processes=100) #use N processes to download the data
    _=pool.map(func,params)
    print 'finished'
Run Code Online (Sandbox Code Playgroud)

python multithreading

21
推荐指数
2
解决办法
2万
查看次数

使用tee从python获取实时打印语句

我有一个python脚本,看起来像这样:

for item in collection:
    print "what up"
    #do complicated stuff that takes a long time.
Run Code Online (Sandbox Code Playgroud)

在bash中,我通过执行以下操作来运行此脚本:

$ python my.py | tee my_file.txt
Run Code Online (Sandbox Code Playgroud)

但是,我在bash中看到的只是一个空行,直到程序结束.然后,所有的打印语句都在一个.

这是发球台的预期操作吗?我可以使用T恤实时查看输出吗?

python stdout tee

16
推荐指数
1
解决办法
5323
查看次数

从sys.stdin获取输入,非阻塞

我正在研究一个竞争机器人,它通过sys.stdin接收'输入,并使用Python的print()输出.我有以下内容:

import sys

def main():
    while True:
        line = sys.stdin.readline()
        parts = line.split()
        if len(parts) > 0:
            # do stuff
Run Code Online (Sandbox Code Playgroud)

问题是输入是通过流进入的,使用上面的方法阻止我打印任何东西直到流关闭.我能做些什么来完成这项工作?

python input

15
推荐指数
3
解决办法
3万
查看次数

使用dup2时的竞争条件

此手册页dup2系统调用说:

EBUSY(仅适用于Linux)这可以通过DUP2开放(2)和DUP()的竞争条件时返回()或DUP3().

它谈什么竞争条件有关,我应该怎样做,如果dup2给出了EBUSY错误?我应该像我一样重试EINTR吗?

c linux posix race-condition dup2

13
推荐指数
2
解决办法
1380
查看次数

将标准输出重定向到文件时,Python 脚本不写入任何输出

我在树莓派上启动时运行了一个 python 脚本(工作正常),我想将输出附加到现有的文本文件中。我在我的 /etc/rc.local 文件中得到了这个代码(我用 cron 尝试了同样的方法,但由于某种原因它甚至没有启动脚本)。

python3 /home/pi/script.py >> /home/pi/log.txt 
Run Code Online (Sandbox Code Playgroud)

不幸的是,无论我尝试什么,日志文件总是空的,除非我直接运行相同的命令并通过按 ctrl+c 而不是 ctrl+z 中止脚本。似乎脚本在向文件写入任何内容之前必须以正确的方式关闭,但我希望它逐渐保存每个输出的文件。

编辑:我解决了。显然,只有在填充一定数量的内存或脚本完成后才会写入文件是正常的(这在我的情况下从未发生过,因为我总是在这之前重新启动 pi)。添加标志 -u 以立即写入文件。

python3 -u /home/pi/script.py >> /home/pi/log.txt 
Run Code Online (Sandbox Code Playgroud)

bash python-3.x raspberry-pi3

13
推荐指数
1
解决办法
4508
查看次数

Python打印语句使用>输出重定向进行缓冲

我在python中做print语句.我正在执行我的脚本:

python script.py > out.log nohup &
Run Code Online (Sandbox Code Playgroud)

打印报表并未全部显示,out.log但程序正在完成.

那行代码在.sh我执行的文件中./script.sh

更新:日志确实获取所有数据,但直到打印出一定数量的行.它似乎是在缓冲输出.

python linux

12
推荐指数
1
解决办法
3701
查看次数