Python 阻塞IO和While 1之间的区别?

Python 阻塞IO和While 1之间的区别?,python,multithreading,while-loop,Python,Multithreading,While Loop,嗨,当我在编程时,我必须做一个选择: while not cont_flag : pass 以及使用对象: 我想知道这两种方法在性能上是否有差异。第一个方法被调用,与第二个方法非常不同。在忙等待中,CPU在执行while循环时不断被使用。在阻塞中,线程实际上是挂起的,直到满足唤醒条件 另见本讨论: 有。第一个方法被调用,与第二个方法非常不同。在忙等待中,CPU在执行while循环时不断被使用。在阻塞中,线程实际上是挂起的,直到满足唤醒条件 另见本讨论: 第一个被称为,它将在等待时消耗1

嗨,当我在编程时,我必须做一个选择:

while not cont_flag :
    pass
以及使用对象:


我想知道这两种方法在性能上是否有差异。第一个方法被调用,与第二个方法非常不同。在忙等待中,CPU在执行while循环时不断被使用。在阻塞中,线程实际上是挂起的,直到满足唤醒条件

另见本讨论:
有。第一个方法被调用,与第二个方法非常不同。在忙等待中,CPU在执行while循环时不断被使用。在阻塞中,线程实际上是挂起的,直到满足唤醒条件

另见本讨论:
第一个被称为,它将在等待时消耗100%的CPU时间。更好的做法是使用一些信号机制来传递事件(例如,完成了某件事)。

第一种机制被称为,它将在等待时消耗100%的CPU时间。更好的做法是使用一些信号机制来传递事件(例如,某事已完成)。

Python一次只允许执行一个线程,而不管系统可能有多少CPU。如果多个线程准备好运行,python将定期在它们之间切换。如果您像第一个示例中那样“忙着等待”,那么while循环将占用您的其他线程可以用于其工作的大部分时间。虽然第二种解决方案要优越得多,但如果你最终使用第一种解决方案,那就加上适度的睡眠

while not cont_flag:
    time.sleep(.1)

Python一次只允许执行一个线程,而不管您的系统可能有多少个CPU。如果多个线程准备好运行,python将定期在它们之间切换。如果您像第一个示例中那样“忙着等待”,那么while循环将占用您的其他线程可以用于其工作的大部分时间。虽然第二种解决方案要优越得多,但如果你最终使用第一种解决方案,那就加上适度的睡眠

while not cont_flag:
    time.sleep(.1)

阻止IO不会把你的CPU变成烤面包机。相反,用户进程只需等待系统说“嘿,你有数据,做点什么”(在这种情况下,IO调用“unblocks”)。@user2864740请避免在评论中回答问题。你可以把它作为一个答案。阻止IO不会把你的CPU变成烤面包机。相反,用户进程只需等待系统说“嘿,你有数据,做点什么”(在这种情况下,IO调用“unblocks”)。@user2864740请避免在评论中回答问题。你可以把它贴出来作为答案。