善用搜索

Python24 进程教程

进程

多进程

===============

<pre class="python">```
# windows 多进程
from multiprocessing import Process
import os

# 子进程执行
def run_proc(name):
    print(name+'进程{s}'.format(s=os.getpid()))

if __name__ == '__main__':
    # 获取当前主线册程id
    print('当前线程id%s'% os.getpid())
    # 创建子线程
    p = Process(target=run_proc,args=('子进程',))
    print('调用Start')
    # 启动线程
    p.start()
    # join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。
    p.join()
    print('end') 
- Pool:如果要启动大量的子进程,可以用进程池的方式批量创建子进程: 
- 代码:  
  \# Pool:如果要启动大量的子进程,可以用进程池的方式批量创建子进程:  
  from multiprocessing import Pool  
  import os,time,random
  
    
    
    
    
    
  def long\_time(name):  
  print('Run task %s (%s)' % (name,os.getpid()))  
  start = time.time()  
  time.sleep(random.random() \* 3)  
  end = time.time()  
  print('TAsk %s runs %0.2f seconds.'%(name,(end-start)))
  
    
    
  if **name** == '**main**':  
  print('parent process %s' % os.getpid())  
  p = Pool(4)  
  for i in range(5):  
  p.apply\_async(long\_time,args=(i,))  
  print('waiting for all subprocesses done...')  
  p.close()  
  p.join() # 调用之前需调用close()方法,调用后会等待所有子进程执行完毕  
  print('done')  
  '''  
  代码解读:  
  对Pool对象调用join()方法会等待所有子进程执行完毕,调用join()之前必须先调用close(),  
  调用close()之后就不能继续添加新的Process了。  
  请注意输出的结果,task 0,1,2,3是立刻执行的,而task 4要等待前面某个task完成后才执行,  
  这是因为Pool的默认大小在我的电脑上是4,  
  因此,最多同时执行4个进程。这是Pool有意设计的限制,并不是操作系统的限制。如果改成:  
  '''  
  ```

======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

发表评论
退出移动版