Print skipping newline(打印跳过换行符)
本文介绍了打印跳过换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个基于我看到的答案的问题。它使用线程池来管理线程,但每个线程打印'Going to sleep... i'
,休眠i
时间,然后打印'Slept..'
。我的问题是,它为什么打印'Going to sleep...Going to sleep...Going to sleep...'
?除非我显式地将
添加到字符串末尾,否则它不会在换行符上打印它们。以下是不带
的输出。
`
Going to sleep...Going to sleep...Going to sleep...
Slept ..0
Going to sleep...
Slept ..1
Going to sleep...
Slept ..2
Slept ..3
Slept ..4
done!!`
以下是我的输出和换行符
Going to sleep...
Going to sleep...
Going to sleep...
Slept ..0
Going to sleep...
Slept ..1
Going to sleep...
Slept ..2
Slept ..3
Slept ..4
done!!
Going to sleep...
和第一个Slept..
之间的空格对我来说也很奇怪。
代码如下
import time
from multiprocessing.dummy import Pool
def run(i):
print "Going to sleep...
"
time.sleep(i)
print ("Slept .." + str(i))
p = Pool(3)
res = [p.apply_async(run, (i,)) for i in range(5)]
p.close()
p.join()
print "done!!"
推荐答案
print
语句首先将您的文本写入sys.stdout
,一旦写入文本,一个单独的字节码将处理
换行符的编写:
>>> import dis
>>> dis.dis(compile('print "Hello world!"', '<demo>', 'exec'))
1 0 LOAD_CONST 0 ('Hello world!')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 1 (None)
8 RETURN_VALUE
请注意反汇编中单独的PRINT_ITEM
和PRINT_NEWLINE
字节码。
在多线程环境中使用print
时,您可能会在这两个不同的步骤之间切换线程;线程1、2和3最终都可能首先写入打印的消息,然后切换线程,只有在另一个线程写入其消息后才会写入换行符。
添加到消息中,您可以确保同时写入换行符。在这种情况下,您确实要向sys.stdout
写入两个换行符。
这篇关于打印跳过换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:打印跳过换行符
基础教程推荐
猜你喜欢
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01