zoukankan      html  css  js  c++  java
  • python之threading与multiprocess,进程与线程

    进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,简单来说就是几个cpu核心就可以开几个进程

    线程:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位,简单来说就是一个进程可以开很多线程。

    而python中对于多进程的优化据说不是太好,在基础库里提供了threading(线程),与multiprocessing(进程)的基础库

    1、多进程

    ## 多线程
    import threading
    
    ## 线程执行函数
    def func():
        print('thread:',threading.current_thread())
    
    ## 线程池
    threads = []
    
    ## 添加线程
    for _ in range(5):
        threads.append(threading.Thread(target=func))
    
    ## 启动线程
    for thread in threads:
        thread.start()
        thread.join()

    结果:

    2、多线程

    ## 多进程
    import multiprocessing
    ## 进程需要执行的函数
    def func():
        print('process',multiprocessing.current_process())
    
    ## 有几个cpu核心添加几个进程
    for _ in range(2):
        multiprocessing.Process(target=func).start()

    结果:

    3、多进程与多线程

    import multiprocessing
    import threading
    import time
    ## 线程执行的函数
    def func():
        print('thread:',threading.current_thread())
        print(time.time(),'
    ')
    ## 线程执行的函数
    def bar():
        ## 线程池
        threads = []
    
        ##这里添加2个线程
        for _ in range(2):
            threads.append(threading.Thread(target=func))
    
        ## 启动线程
        for thread in threads:
            thread.start()
            thread.join()
    
    ## 进程池
    multiprocess = []
    
    ## 有几核心cpu启动几个
    for i in range(2):
        multiprocess.append(multiprocessing.Process(target=bar))
    
    ## 启动进程
    for j in multiprocess:
        j.start()
        j.join()

    查看结果:

  • 相关阅读:
    学习
    2018年看书计划(40本)
    java快排(两种方法)
    max-points-on-a-line
    Angular不同版本对应的Bootstrap组件
    AngularCLI介绍及配置文件主要参数含义解析
    D3——Updates, Transitions, and Motion
    SVG中的元素属性
    D3——Axes
    Angular2.0知识架构图
  • 原文地址:https://www.cnblogs.com/dflblog/p/11365346.html
Copyright © 2011-2022 走看看