在 Python for *nix 中,time.sleep()
会阻塞线程还是进程?
最佳答案
它阻塞了线程。如果您查看 Python 源代码中的 Modules/timemodule.c,您会看到在对 floatsleep()
的调用中, sleep 操作的实质部分被包装在 Py_BEGIN_ALLOW_THREADS 和 Py_END_ALLOW_THREADS block 中,允许其他线程在当前线程休眠时继续执行。你也可以用一个简单的 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
关于python - time.sleep -- 休眠线程或进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/92928/