• 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数量的线程/进程池,提交任务,然后整理结果。

  • 相关阅读:
    AGC030 简要题解
    CF1601 简要题解
    CSP2021 题解
    2021.11.1-2021.11.7总结
    超快速梅森旋转SFMT(SIMD-oriented Fast Mersenne Twister)一览
    2021.10.25-2021.10.31总结
    CSP 2021 游记
    在Windows vs2015环境下编译使用Libevent
    在Windows环境下实现一个简单的libevent服务器
    Thinking in C++ 课后习题自己实现 第二章
  • 原文地址:https://www.cnblogs.com/tianboblog/p/9852465.html
Copyright © 2020-2023  润新知