码迷,mamicode.com
首页 > 编程语言 > 详细

python多进程

时间:2018-05-21 23:37:03      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:main   系统   pid   通过   imp   cpu   tuple   数据资源   查看   


并发:是指系统具有处理多个任务(动作)的能力(CPU通过切换来完成并发),并发是并行的一个子集。

并行:是指系统具有同时处理多个任务(动作)的能力

 

进程与线程:

一个任务就是一个进程,比如打开一个浏览器,打开一个qq 也是一个进程。 ,程序的所有数据资源都是存放在这里的。进程是最小的资源管理单元


线程是基于进程的,一个进程至少有1个线程,代码是在线程中执行线程是最小的执行单元,比如你发消息,发送文件等操作,都是线程去操作的。

 

线程是共享进程的内存单元的,所以多个线程实现资源共享。


一个线程可以创建或撤销另外一个线程,那么这个线程被称为父线程。另

同一个进程中的多个线程可以并发执行(存在cpu切换),不可以并行执行。这是因为,python存在全局解释器锁,在某个时刻,一个应用程序只有1个线程可以使用cpu。

 

 

1,创建多进程

import multiprocessing

import threading


import time


def worker(id,interval):
    print(‘start work {0}‘.format(id))
    time.sleep(interval)
    print(‘end work {0}‘.format(id))


def main():
    print(‘start main‘)
    p1  = multiprocessing.Process(target=worker,args=(1,1))
    p2  = multiprocessing.Process(target=worker,args=(2,2))
    p3  = multiprocessing.Process(target=worker,args=(3,3))
    p1.start()
    # print(p1.pid)
    p2.start()
    # print(p2.pid)
    p3.start()
    # print(p3.pid)
    print(‘end main‘)


if __name__ == ‘__main__‘:
    main()
   
  
‘‘‘

target 指的是新派生出来的子进程需要处理的内容

args 是给函数传入的参数,args必须是tuple.如果是传入单个元素,必须也是tuple.
p代表的是一个多进程,run表示启动进程,start也是启动进程,他本质是调用run方法。建议使用start
p.is_alive() 判断进程是否存活
p.run() 启动进程
p.name() 输出进程的名字
p.pid() 进程的pid
p.join(timeout) 等待子进程结束或者到超时时间
p.terminate 强制子进程的退出

‘‘‘

import multiprocessing

import threading


import time


def worker(id,interval):
    print(‘start work {0}‘.format(id))
    time.sleep(interval)
    print(‘end work {0}‘.format(id))


def main():
    print(‘start main‘)
    p1  = multiprocessing.Process(target=worker,args=(1,1))
    p2  = multiprocessing.Process(target=worker,args=(2,2))
    p3  = multiprocessing.Process(target=worker,args=(3,3))
    p1.start()
    p1.join(1)  #等待p1进程执行1s,不管p1执行是否完毕,代码继续向下执行。
    p2.start()
    p3.start()
    for p in multiprocessing.active_children():  #查看当前存活的进程
        print(p.name)

    print(‘end main‘)


if __name__ == ‘__main__‘:
    main()

  

python多进程

标签:main   系统   pid   通过   imp   cpu   tuple   数据资源   查看   

原文地址:https://www.cnblogs.com/lin1/p/9068799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!