zoukankan      html  css  js  c++  java
  • python多线程/多进程

    thread和threading的区别

    1. threading相对与thread是更高级别的线程管理模块
    2. thread和threading模块中的一些属性会有冲突
    3. thread模块拥有的同步原因实际上只有一个Lock,而threading有很多(Lock,Semaphore等)
    4. 使用thread模块线程,当主线程结束时其子线程也会被强制结束(不会发出警告或适当的清理);threading至少能保证在主线程退出前结束。
    5. threading中操作线程的主要是threading.thread类。
    实例化 Thread(调用 Thread())和调用 thread.start_new_thread()
    的最大区别是新线程不会立即开始执行。 通过start开启,通过join等待线程完成。使用join()方法要比等待锁释放的无限循环更加清晰(这也是这种锁又称为自旋锁的原因)
    

    python模块atexit与register函数

    atexit.register(func, *args, **kwargs)

    register函数位于atexit模块,用于在程序退出时运行,进行必要的清理等,有点像C++的析构函数。

    在python3中,register有2种方式来注册函数,一种是直接在register中填写函数名,还有一种就是用装饰器语法。

    例如对func()函数注册:

    register(func) #可以在func后面对func进行传参
    
    @register 
    def func(): 
    …

    https://blog.csdn.net/hwb18253164494/article/details/53453694

    subprocess

    subprocess是用来执行其他可执行程序的,即执行外部命令。它是os.fork()和os.execve()的封装。它启动的进程不会把父进程的模块加载一遍。使用subprocess的通信机制比较少,通过管道或者信号机制。

    multiprocessing

    multiprocessing是用来执行python函数的,它启动的进程会重新加载父进程的代码。可以通过Queue和Array等对象实现通信。

    concurrent.futures

    这是一个高级库,它只在“任务”级别进行操作,这样我们不需要在过分关注同步和线程/进程的管理了。只需要指定一个给定了worker数量的线程/进程池,提交任务,然后整理结果。

  • 相关阅读:
    ****** 2019-2020-1 《数据结构与面向对象程序设计》第1周学习总结
    预备作业
    《数据结构与面向对象程序设计》第01周学习总结
    我太难了——00周作业
    作业二
    预备作业 作业一
    FIR滤波器设计
    第五章:相关分析
    通常来说分频电路用计数器来实现,奇数倍的话记得用上或门!
    HDLBits 刷题记录(5)
  • 原文地址:https://www.cnblogs.com/tianboblog/p/9852465.html
Copyright © 2011-2022 走看看