在Python *nix中,time.sleep()是否阻塞线程或进程?


当前回答

它只会休眠线程,除非您的应用程序只有一个线程,在这种情况下,它会休眠线程,实际上也会休眠进程。

python文档sleep()并没有指定这一点,所以我当然可以理解这种混乱!

其他回答

它只会休眠线程,除非您的应用程序只有一个线程,在这种情况下,它会休眠线程,实际上也会休眠进程。

python文档sleep()并没有指定这一点,所以我当然可以理解这种混乱!

只有线程,除非您的进程只有一个线程。

只是一根线。

如果线程在同一个线程中执行,而不是从主代码执行,则阻塞线程

它会阻塞线程。如果你查看Python源代码中的Modules/ timmodule .c,你会看到在对floatsleep()的调用中,睡眠操作的实质部分被封装在Py_BEGIN_ALLOW_THREADS和Py_END_ALLOW_THREADS块中,允许其他线程在当前线程休眠时继续执行。你也可以用一个简单的python程序来测试:

import time
from threading import Thread

class worker(Thread):
    def run(self):
        for x in xrange(0,11):
            print x
            time.sleep(1)

class waiter(Thread):
    def run(self):
        for x in xrange(100,103):
            print x
            time.sleep(5)

def run():
    worker().start()
    waiter().start()

这将打印:

>>> thread_test.run()
0
100
>>> 1
2
3
4
5
101
6
7
8
9
10
102