iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python阻塞调度的使用方法
  • 293
分享到

python阻塞调度的使用方法

2023-06-14 23:06:39 293人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python阻塞调度的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted

这篇文章主要介绍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频道!

--结束END--

本文标题: python阻塞调度的使用方法

本文链接: https://www.lsjlt.com/news/275525.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python阻塞调度的使用方法
    这篇文章主要介绍python阻塞调度的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted...
    99+
    2023-06-14
  • Java 非阻塞I/O使用方法
    绝大部分知识与实例来自O'REILLY的《Java网络编程》(Java Network Programming,Fourth Edition,by Elliotte Rusty Harold(O'REILLY))。非阻塞I/O简介非阻塞I/...
    99+
    2023-05-31
    java 非阻塞 i/o
  • php实现阻塞的方法
    这篇文章主要为大家展示了php实现阻塞的方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“php实现阻塞的方法”这篇文章吧。php有什么用php是一个嵌套的缩写名称,指的是英文超级文本预处理语言(...
    99+
    2023-06-06
  • 使用Runtime调用Process.waitfor导致的阻塞问题
    目录1. 关于Runtime类的小知识2. Runtime的几个重要的重载方法3. Runtime的使用方式4. 卡死原因5. 解决方案6. Runtime最优雅的调用方式1. 关于...
    99+
    2024-04-02
  • Java Process与Runtime()的使用及调用cmd命令阻塞的解决方案
    Java Process与Runtime()使用 java调用cmd执行bat文件有时会出现卡死的现象,当时感觉很迷惑,后来查资料,本来一般都是这样来调用程序并获取进程的输出流的,但...
    99+
    2024-04-02
  • java调用process线程阻塞问题的解决
    java调用process线程阻塞问题 项目需求中涉及java调用.bat文件进行图像处理,先直接上简略版程序 public void draw(){ //调用b...
    99+
    2024-04-02
  • Python异步之非阻塞流如何使用
    1. 异步流asyncio 的一个主要好处是能够使用非阻塞流。Asyncio 提供非阻塞 I/O 套接字编程。这是通过流提供的。可以打开提供对流写入器和流写入器的访问的套接字。在合适的时候,使用协同程序可以从流中写入和读取数据并暂停。完成后...
    99+
    2023-05-21
    Python
  • java中interrupt()打断阻塞的操作方法
    这篇文章主要介绍java中interrupt()打断阻塞的操作方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了W...
    99+
    2023-06-15
  • 如何解决java调用process线程阻塞的问题
    这篇文章将为大家详细讲解有关 如何解决java调用process线程阻塞的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。java调用process线程阻塞问题项目需求中涉及java调用.bat文件进行...
    99+
    2023-06-15
  • Python 异步之非阻塞流使用示例详解
    目录1. 异步流2. 如何打开连接3. 如何启动服务器4. 如何使用 StreamWriter 写入数据5. 如何使用 StreamReader 读取数据6. 如何关闭连接1. 异步...
    99+
    2023-03-22
    Python 异步非阻塞流 Python 异步
  • 执行HttpResponse的请求阻塞太久的处理方法
    执行HttpResponse的请求阻塞太久: 设置请求连接超时时间:在HttpRequest.post()方法后,使用connectTimeout()方法设置连接超时时间。例如:.connectTimeout(3000)表示设置连接超时时...
    99+
    2023-09-03
    服务器 网络 java spring boot spring
  • Python使用定时调度任务的方式
    目录1、简单循环 Simple loops2、简单循环但是使用了线程Simple loops but threaded3、定时调度库 Schedule Library4、Python...
    99+
    2024-04-02
  • C#中定时任务被阻塞问题的解决方法
    目录1.摘要2.C#中定时任务的最简方法3.定时任务阻塞现象4.阻塞现象原因分析5.问题解决总结1.摘要 本文会介绍一个C#中最简单定时任务的使用方法,以及会遇到的定时任务被阻塞现...
    99+
    2024-04-02
  • 了解Go语言中阻塞的实现方法与优势
    Go语言是一种并发特性十分强大的编程语言,它采用了goroutine的概念来实现并发,同时也提供了丰富的工具和方法来处理阻塞。在Go语言中,阻塞的实现方法与优势是我们需要了解的重要内容...
    99+
    2024-04-02
  • quartz任务阻塞的原因及解决方法是什么
    在Quartz任务调度中,任务阻塞的原因可能有以下几种:1. 任务执行时间过长:如果一个任务执行时间过长,可能会导致后续任务无法按时...
    99+
    2023-10-20
    quartz
  • Python异步在非阻塞子进程中运行命令的方法是什么
    今天小编给大家分享一下Python异步在非阻塞子进程中运行命令的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1....
    99+
    2023-07-05
  • django任务调度方法怎么使用
    Django中的任务调度可以通过以下方法进行使用:1. 使用Django自带的任务调度器 - Django提供了一个内置的任务调度器...
    99+
    2023-09-26
    django
  • LinkedBlockingQueue链式阻塞队列的使用和原理解析
    目录概览使用方法1. add | remove | element2. offer | poll | peek3. put | take4. offer | poll (timeou...
    99+
    2022-11-13
    LinkedBlockingQueue 链式阻塞队列 阻塞队列LinkedBlockingQueue
  • Python进度条tqdm的使用方法
    本篇内容介绍了“Python进度条tqdm的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言有时候在使用Python处理比较耗时操...
    99+
    2023-06-20
  • Spring Boot多个定时任务阻塞问题的解决方法
    目录前言1、重写SchedulingConfigurer#configureTasks()2、通过配置开启3、结合@Async总结前言 今天这篇文章介绍一下Spring Boot 中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作