python的打印是否同步? :)
线程之间。
答案 0 :(得分:11)
Python的print isn't even vaguely thread safe。 (Bram Cohen的话,不是我的。)
答案 1 :(得分:2)
如果从多个线程调用print
,输出可能会在调度程序的奇思妙想中交错。
答案 2 :(得分:1)
答案是否定的,线程可以互相中断。 但是,您可以使用锁来避免这种情况。
锁定阻止线程在全局事物上相互中断(特别是输出屏幕) 当一个线程想要使用带锁的全局事物时,它首先检查锁是否被解锁,如果没有等待直到它被锁定,之后锁定锁,做它想做的全局事情,最后释放锁。
但是,不要只使用标志变量,如果检查要实现这一点,则线程可以在if语句和锁定之间切换。 如果我没记错的话,Python会实现一个锁类。
另请注意,如果未正确使用锁定,则可能会遇到死锁或活锁。我现在没有太多时间,所以我无法在这里解释所有这些,但你可以谷歌了解更多信息,我还会检查我是否可以分享去年大学课程的演示文稿,他们解释说相当漂亮好在那里。
答案 3 :(得分:0)
各种解决方法...它不会同步打印,但是它是单片的,因此线程将不会相互写。
优点:不需要锁定,因此速度更快。
缺点:
/GenreType/array-node("GenreType Instance Record")/object-node()/TitleGenre[following-sibling::GenreSource="ABC"]