zoukankan      html  css  js  c++  java
  • 多进程

    1.1个进程实例:

    import multiprocessing
    import time
    
    def run(name):
        time.sleep(1)
        print('hello', name)
    
    if __name__ == '__main__':
        p = multiprocessing.Process(target=run, args=('bob',))
        p.start()
        p.join()
    

     运行结果:

    hello bob
    

    2. 同时启用3个进程:

    import multiprocessing
    import time
    
    def run(name):
        time.sleep(1)
        print('hello', name)
    
    if __name__ == '__main__':
        for i in range(3):
            p = multiprocessing.Process(target=run, args=('bob %s'%i,))
            p.start()
    
    

     运行结果:

    hello bob 0 
    hello bob 1
    hello bob 2
    
    

    3.进程里面可以再起新的线程:

    import multiprocessing
    import time,threading
    
    def thread_run():
        print(threading.get_ident()) #获得线程号
    def run(name):
        time.sleep(1)
        print('hello', name)
        t=threading.Thread(target=thread_run,)
        t.start()
    
    if __name__ == '__main__':
        for i in range(3):
            p = multiprocessing.Process(target=run, args=('bob %s'%i,))
            p.start()
            p.join()
    

     运行结果:

    hello bob 0
    12108
    hello bob 1
    8552
    hello bob 2
    9080
    

     4.取进程号。没有起多进程,却出现了2个进程号。再执行一遍,发现父进程号不变,子进程号在发生变化。 

    from multiprocessing import Process
    import os
    
    
    def info(title):
        print(title)
        print('module name:', __name__)
        print('parent process:', os.getppid()) #父进程的ID
        print('process id:', os.getpid())  #自己的ID
        print("
    
    ")
    
    
    def f(name):
        info('33[31;1mfunction f33[0m')
        print('hello', name)
    
    
    if __name__ == '__main__':
        info('33[32;1mmain process line33[0m')
    

     运行结果:

    main process line
    module name: __main__
    parent process: 8748
    process id: 11976
    

     每一个进程默认都是由父进程启动的。11976这个进程是由pyCharm 8748启用的。

    5. 父进程和子进程里面都调用f

    from multiprocessing import Process
    import os
    
    
    def info(title):
        print(title)
        print('module name:', __name__)
        print('parent process:', os.getppid()) #父进程的ID
        print('process id:', os.getpid())  #自己的ID
        print("
    
    ")
    
    
    def f(name):
        info('33[31;1mcalled from child process function f33[0m') #子进程里也调用f
        print('hello', name)
    
    
    if __name__ == '__main__':
        info('33[32;1mmain process line33[0m')
        p = Process(target=f, args=('bob',)) #父进程里调用f
        p.start()
        #p.join()
    

     运行结果:发现每一个子进程都是由父进程启动的。即便是主程序,也有一个父进程。

    main process line
    module name: __main__
    parent process: 8748
    process id: 5604
    
    
    
    called from child process function f
    module name: __mp_main__
    parent process: 5604
    process id: 11096
    
    
    
    hello bob
    
    Process finished with exit code 0
    
  • 相关阅读:
    K项目小记
    与职场中年女性聊天,一定要小心!
    不是自己的东西不要拿,是做人最起码的道理
    为什么很多人排斥中国女生嫁去外国?
    北大清华几十位硕士博士挤入街道办事处任职,我的几点看法
    面对一直在房价洼地的长沙,我不后悔十几年前逃离长沙
    SAP QM 源检验(Source Inspection)功能展示
    电视剧《猎毒人》观后感
    特朗普如能连任美国总统,于中国不是坏事
    python-day4-字符串,列表相关方法
  • 原文地址:https://www.cnblogs.com/momo8238/p/7356245.html
Copyright © 2011-2022 走看看