python - time.sleep -- 休眠线程或进程?

标签 python multithreading time sleep python-internals

在 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/

相关文章:

python - 在 2d 绘图上投影 3d 曲面

python - 摆脱 Tensorflow Object Detection API 中不同类别的重叠边界框

java - 将对象从池传递到可运行的类

C++ WTL8.1 如何在消息循环的新线程中创建窗口?

python - 如何使用timeit模块

python - 如何在Python中知道日期格式的数据帧是否包含在时间间隔内(矢量化)

android - 如何测量移动应用程序的冷/热启动时间

Python:条形图 - 垂直标签 - 剪切

python - 线路安排问题。 (有人可以提出一个更省时的解决方案吗?)

java - Apache Flink 如何并行读取 CSV 文件