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():目前所运行的进程对象列表

  • 相关阅读:
    mysql中delimiter
    error: unpacking of archive failed on file /usr/sbin/zabbix_agent;592e5bc3: cpio: open
    CefSharp中文帮助文档
    ASP.NET Aries 开发框架
    简洁的富文本编辑器
    asp.net core 获取appsettings.json里的配置
    在asp.net core中使用NLog
    临时禁用Resharper
    visual studio 无添加视图 选项
    visual studio(vs)初始化
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/7655513.html
Copyright © 2011-2022 走看看