zoukankan      html  css  js  c++  java
  • python 进程编程速成

      python具有thread多线程库,但多线程并不是真正的多线程,不能充分利用多核CPU资源。

      在大多数情况下,python可以使用multiprocessing多进程库,可以轻松完成从单进程到并发执行的转换。

      multiprocessing库支持子进程、通信和共享数据、执行不同形式的同步,提供Process、Queue、Pipe、Lock等类对象。

    一、Process类对象,创建进程

      在multiprocessing中,每一个进程都用一个Process类来表示。

    Process([group [, target [, name [, args [, kwargs]]]]])
    
    参数:
    group分组,实际上不使用
    target表示调用对象,你可以传入方法的名字
    name是别名,相当于给这个进程取一个名字
    args表示被调用对象的位置参数元组,比如target是函数a,他有两个参数m,n,那么args就传入(m, n)即可
    kwargs表示调用对象的字典
    

       示例1:

    import multiprocessing
     
    def process(num):
        print 'Process:', num
     
    if __name__ == '__main__':
        for i in range(5):
            p = multiprocessing.Process(target=process, args=(i,))
            p.start()
    

     备注:

      multiprocessing.Process():创建进程

      target:传入函数名(方法)

      args:传入函数或方法的位置参数元组

      P.start()方法用于启动进程

      

      示例2:

    import multiprocessing
    import time
     
    def process(num):
        time.sleep(num)
        print 'Process:', num
     
    if __name__ == '__main__':
        for i in range(5):
            p = multiprocessing.Process(target=process, args=(i,))
            p.start()
     
        print('CPU number:' + str(multiprocessing.cpu_count()))
        for p in multiprocessing.active_children():
            print('Child process name: ' + p.name + ' id: ' + str(p.pid))
     
        print('Process Ended')
    

    备注:

      m.cpu_count():获取当前机器的CPU核心数量

      m.active_children():目前所运行的进程对象列表

  • 相关阅读:
    tensorFlow(二)线性回归
    tensorFlow(一)相关重要函数理解
    Java NIO学习笔记-通道&缓冲区
    Code Plus插件开发笔记
    Java NIO框架Netty demo
    前端React开发入门笔记
    Tomcat性能优化
    Spring Boot整合Dubbo框架demo
    Spring Boot入门实例
    简单的RPC原型与实现原理
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/7655513.html
Copyright © 2011-2022 走看看