何时锁定多线程和多处理



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

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

适用于多线程和多进程
同样,在读取全局文件或全局变量的值时必须这样做吗??

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

您可以简化为

with lock:
    print(something)

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

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

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

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

最新更新