python阻塞调度的使用方法

这篇文章主要介绍python阻塞调度的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联建站是一家集网站建设,卫辉企业网站建设,卫辉品牌网站建设,网站定制,卫辉网站建设报价,网络营销,网络优化,卫辉网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

python有哪些常用库

python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

1、说明

标准调度是python使用软件时钟调度线程,有时python的线程会自动阻塞,例如raw_input(),sleep()等功能,此时python使用阻塞调度。

(1)主线程调用sleep(1)后,调用Py_BEGIN_ALLOW_THREADS立即释放GIL,然后调用操作系统的sleep操作。此时,主线程由操作系统自动管理。

(2)子线程获得GIL。此时,主线程和子线程可以同时由操作系统安排。操作系统在执行子线程一段时间后悬挂,安排主线程,在主线程sleep结束前悬挂主线程,继续唤醒子线程执行。

(3)当主线程结束时,操作系统唤醒主线程。主线程调用Py_END_ALLOW_THREADS再次申请GIL,重新进入python标准调度过程。

2、实例

[ceval.h]
#define Py_BEGIN_ALLOW_THREADS { \
            PyThreadState *_save; \
            _save = PyEval_SaveThread();
#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
         }
 
[ceval.c]
PyThreadState* PyEval_SaveThread(void)
{
    PyThreadState *tstate = PyThreadState_Swap(NULL);
    if (interpreter_lock)
        PyThread_release_lock(interpreter_lock);
    return tstate;
}
 
void PyEval_RestoreThread(PyThreadState *tstate)
{
    if (interpreter_lock) {
        int err = errno;
        PyThread_acquire_lock(interpreter_lock, 1);
        errno = err;
    }
    PyThreadState_Swap(tstate);
}

以上是“python阻塞调度的使用方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


当前文章:python阻塞调度的使用方法
文章起源:http://pwwzsj.com/article/pehhhs.html