zoukankan      html  css  js  c++  java
  • Python简单多进程demo

    '''
    多线程使用场景:
    怎样用Python的多线程提高效率?
    io操作不占用CPU
    计算操作占用CPU
    Python多线程不适合CPU操作密集型的任务,适合io操作密集型的任务
    如果有CPU操作密集型的任务需要用多进程,启动八个进程每个进程里一个线程,一共八个线程
    在八核上运行,可以利用八核了,唯一的坏处是数据不能共享
    怎样启动多进程呢?
    '''
    import multiprocessing
    import time
    import threading
    
    # 功能:启动10个进程,每个进程里启动一个线程
    def thread_run():
        print(threading.get_ident())
    def run(name):
        time.sleep(2)
        print("hello",name)
        t = threading.Thread(target=thread_run,)
        t.start()
    if __name__ == '__main__':
        for i in range(10):
            p = multiprocessing.Process(target=run, args=('bob{0}'.format(i),))
            p.start()

     打印子进程和父进程信息:

    '''
    每个进程都是由他的父进程启动的,每个进程都有一个父进程
    '''
    import os
    from multiprocessing import Process
    
    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;1m main process line33[0m')
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    
    '''
     main process line
    module name: __main__
    parent process: 4436
    process id: 6032
    
    
    
    function f
    module name: __mp_main__
    parent process: 6032
    process id: 5800
    
    
    
    hello bob
    '''
  • 相关阅读:
    制作A4纸打印的网页像素大小设置(转)
    关于Vue.use()详解
    Vue的axios如何全局注册
    JS中的apply,call,bind深入理解
    JS异步编程 (2)
    JS异步编程 (1)
    彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)
    IPv6地址分类及表示方法
    SublimeText3追踪函数工具CTags设置及使用
    转-编写CGI小结
  • 原文地址:https://www.cnblogs.com/staff/p/9692213.html
Copyright © 2011-2022 走看看