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
    
  • 相关阅读:
    windows下python3.6环境搭建
    接口自动化(2)----如何编写接口自动化用例
    关于接口自动化测试的规则说明
    linux 常用命令 补充
    linux 常用命令
    linux 初识
    java高级教程 JDK代理和CGLIB代理两种方式 账户类
    java高级教程 实例化和非实例化 bean 学生信息
    java高级教程 俩数之和
    C++使用printf输出string类
  • 原文地址:https://www.cnblogs.com/momo8238/p/7356245.html
Copyright © 2011-2022 走看看