可能重复:
Python输出缓冲
有没有办法从我的代码中获得运行python -u的效果?如果失败了,我的程序可以检查它是否在-u模式下运行并退出并显示错误消息,如果没有?这是在linux上(ubuntu 8.10服务器)
我试图在python中找到一种方法将脚本执行日志重定向到文件以及stdoutpythonic方式.有没有简单的方法来实现这一目标?
詹金斯很新,我有一个简单但烦人的问题.当我在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
我在一些python代码中注意到-u用于启动python解释器.我查看了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脚本,看起来像这样:
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恤实时查看输出吗?
我正在研究一个竞争机器人,它通过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)
问题是输入是通过流进入的,使用上面的方法阻止我打印任何东西直到流关闭.我能做些什么来完成这项工作?
此手册页的dup2系统调用说:
EBUSY(仅适用于Linux)这可以通过DUP2开放(2)和DUP()的竞争条件时返回()或DUP3().
它谈什么竞争条件有关,我应该怎样做,如果dup2给出了EBUSY错误?我应该像我一样重试EINTR吗?
我在树莓派上启动时运行了一个 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) 我在python中做print语句.我正在执行我的脚本:
python script.py > out.log nohup &
Run Code Online (Sandbox Code Playgroud)
打印报表并未全部显示,out.log但程序正在完成.
那行代码在.sh我执行的文件中./script.sh
更新:日志确实获取所有数据,但直到打印出一定数量的行.它似乎是在缓冲输出.