0

打印到标准输出时是否需要这样做:

   `lock.acquire()`
    #printing to standard output
    lock.release()

对于多线程和多进程。
仅在从全局文件或全局变量的值中读取时也必须这样做吗?

PS:我在 python 2.7 中进行多线程和多处理。

4

2 回答 2

1

你可以简化为

with lock:
    print(something)

但是,是的,您需要避免打印被各种线程混合。

使用只读变量时,不需要锁。读取文件时(因为您正在更改状态),您确实需要。

于 2013-07-06T16:06:38.187 回答
0

由于 GIL,Python 的打印是线程安全的,您不会通过从多个线程打印来破坏 Python 的内部状态。

但是,如果您想确保多个打印语句将其所有打印按逻辑方式分组,您确实需要一种方法来确保以正确的顺序打印事物。您发现的一种方法是使用锁定,另一种 IMO 更简单的方法是构建一个包含需要一起打印的所有内容的单个字符串。

于 2013-07-06T16:15:59.790 回答