打印到标准输出时是否需要执行此操作:
`lock.acquire()`
#printing to standard output
lock.release()
对于多线程和多进程 这也必须在从全局文件或全局变量值读取时才能完成?
PS:我在python 2.7中进行多线程和多处理。
答案 0 :(得分:1)
你可以简化为
with lock:
print(something)
但是,是的,你需要避免各种线程混合打印。
使用只读变量时,您不需要锁定。在阅读文件时(因为你正在改变状态),你需要。
答案 1 :(得分:0)
由于GIL,Python的打印是线程安全的,你不会通过从多个线程打印而导致Python的内部状态。
但是,如果要确保多个打印报表将所有打印件以逻辑方式分组,则需要确保以正确的顺序打印内容。您发现的一种方法是使用锁定,另一种IMO更简单的方法是构建一个包含需要一起打印的所有内容的字符串。