• 进程和线程对比


    1,开进程的开销远远大于开线程

    import time
    from threading import Thread
    from multiprocessing import Process
    
    def piao(name):
        print('%s piaoing'%name)
        # time.sleep(1)
        print('%s piaoing end' % name)
    
    if __name__=='__main__':
        start = time.time()
        p1 = Process(target=piao, args=('egon',))  # 创建了一个线程对象t1
        p1.start()  # 进程程花费时间:cost time 0.010999917984008789
    
        # t1=Thread(target=piao,args=('egon',))  #创建了一个线程对象t1
        # t1.start()  # 线程花费时间:cost time 0.0009999275207519531
        print('cost time %s'%(time.time()-start))
    

    输出:

    cost time 0.010999917984008789
    egon piaoing
    egon piaoing end
    

    2,同一进程内的多个线程共享该进程的地址空间,不同进程彼此独立内存空间

    from threading import Thread
    from multiprocessing import Process
    import time
    n = 100
    def task():
        global n
        n = 1
        print('子进程',n)
    
    if __name__=='__main__':
        # p1 = Process(target=task,)  # 创建了一个进程对象t1
        # p1.start()
        '''
        进程输出:
        子进程 1
        主线程, 100
        ''''
    
        t1 = Thread(target=task,)  #创建了一个线程对象t1
        t1.start()  
        '''
        线程输出:
        子进程 1
        主线程, 1
        ''''
        time.sleep(1)
        print('主线程,',n)
    

    3,瞅一瞅pid

    from threading import Thread
    from multiprocessing import Process,current_process
    import os
    def task():
        print('子进程或线程的pid::',current_process().pid)
        print('子进程或线程的pid>>',os.getpid(),'主进程',os.getppid())
    
    if __name__=='__main__':
        p1 = Process(target=task,)  # 创建了一个进程对象t1
        p1.start()
        print('主进程pid=%s, OS得出的pid=%s, ppid=%s' % (current_process().pid, os.getpid(), os.getppid()))
        '''输出:
            主进程pid=7924, OS得出的pid=7924, ppid=6996
            子进程或线程的pid:: 6892
            子进程或线程的pid>> 6892 主进程 7924
        '''
        # t1=Thread(target=task,)  #创建了一个线程对象t1
        # t1.start()
        # print('主线程pid=%s, OS得出的pid=%s, ppid=%s'%(current_process().pid,os.getpid(),os.getppid()))
        '''输出:
            子进程或线程的pid:: 7712
            子进程或线程的pid>> 7712 主进程 6996
            主线程pid=7712, OS得出的pid=7712, ppid=6996
            '''
    
  • 相关阅读:
    学习笔记(5)——实验室集群LVS监控Web界面配置
    学习笔记(4)——实验室集群管理结点IP配置
    Java中List集合去除重复数据的方法
    Android App内部自动更新Library的使用(转载)
    AppBarLayout+TabLayout+RecyclerView+ViewPager+Fragment(布局悬浮)
    126、android html唤醒APP(转载)
    第三方免费加固横向对比(转载)
    124、@JavascriptInterface
    123、 android Retrofit 介绍和使用(转载)
    win10专业版激活步骤
  • 原文地址:https://www.cnblogs.com/heris/p/16365605.html
Copyright © 2020-2023  润新知