python进程

python进程

创建进程的类:Process([group [, target [, name [, args [, kwargs]]]]]),target表示调用对象,args表示调用对象的位置参数元组。kwargs表示调用对象的字典。name为别名。group实质上不使用。
方法:is_alive()、join([timeout])、run()、start()、terminate()。其中,Process以start()启动某个进程。

属性:authkey、daemon(要通过start()设置)、exitcode(进程在运行时为None、如果为–N,表示被信号N结束)、name、pid。其中daemon是父进程终止后自动终止,且自己不能产生新进程,必须在start()之前设置。

例1.1:创建函数并将其作为单个进程

 

import multiprocessing
import time

def worker(interval):
    n = 5
    while n > 0:
        print("The time is {0}".format(time.ctime()))
        time.sleep(interval)
        n -= 1

if __name__ == "__main__":
    p = multiprocessing.Process(target = worker, args = (3,))
    p.start()
    print "p.pid:", p.pid
    print "p.name:", p.name
    print "p.is_alive:", p.is_alive()

结果

p.pid: 8736
p.name: Process-1
p.is_alive: True
The time is Tue Apr 21 20:55:12 2015
The time is Tue Apr 21 20:55:15 2015
The time is Tue Apr 21 20:55:18 2015
The time is Tue Apr 21 20:55:21 2015
The time is Tue Apr 21 20:55:24 2015

例1.2:创建函数并将其作为多个进程

import multiprocessing
import time

def worker_1(interval):
    print "worker_1"
    time.sleep(interval)
    print "end worker_1"

def worker_2(interval):
    print "worker_2"
    time.sleep(interval)
    print "end worker_2"

def worker_3(interval):
    print "worker_3"
    time.sleep(interval)
    print "end worker_3"

if __name__ == "__main__":
    p1 = multiprocessing.Process(target = worker_1, args = (2,))
    p2 = multiprocessing.Process(target = worker_2, args = (3,))
    p3 = multiprocessing.Process(target = worker_3, args = (4,))

    p1.start()
    p2.start()
    p3.start()

    print("The number of CPU is:" + str(multiprocessing.cpu_count()))
    for p in multiprocessing.active_children():
        print("child   p.name:" + p.name + "\tp.id" + str(p.pid))
    print "END!!!!!!!!!!!!!!!!!"

结果

The number of CPU is:4
child   p.name:Process-3    p.id7992
child   p.name:Process-2    p.id4204
child   p.name:Process-1    p.id6380
END!!!!!!!!!!!!!!!!!
worker_1
worker_3
worker_2
end worker_1
end worker_2
end worker_3

例1.3:将进程定义为类

import multiprocessing
import time

class ClockProcess(multiprocessing.Process):
    def __init__(self, interval):
        multiprocessing.Process.__init__(self)
        self.interval = interval

    def run(self):
        n = 5
        while n > 0:
            print("the time is {0}".format(time.ctime()))
            time.sleep(self.interval)
            n -= 1

if __name__ == '__main__':
    p = ClockProcess(3)
    p.start() 

:进程p调用start()时,自动调用run()

结果

 

the time is Tue Apr 21 20:31:30 2015
the time is Tue Apr 21 20:31:33 2015
the time is Tue Apr 21 20:31:36 2015
the time is Tue Apr 21 20:31:39 2015
the time is Tue Apr 21 20:31:42 2015

 

  

例1.4:daemon程序对比结果

#1.4-1 不加daemon属性

import multiprocessing
import time

def worker(interval):
    print("work start:{0}".format(time.ctime()));
    time.sleep(interval)
    print("work end:{0}".format(time.ctime()));

if __name__ == "__main__":
    p = multiprocessing.Process(target = worker, args = (3,))
    p.start()
    print "end!"

结果

end!
work start:Tue Apr 21 21:29:10 2015
work end:Tue Apr 21 21:29:13 2015

#1.4-2 加上daemon属性

import multiprocessing
import time

def worker(interval):
    print("work start:{0}".format(time.ctime()));
    time.sleep(interval)
    print("work end:{0}".format(time.ctime()));

if __name__ == "__main__":
    p = multiprocessing.Process(target = worker, args = (3,))
    p.daemon = True
    p.start()
    print "end!"

结果

end!

:因子进程设置了daemon属性,主进程结束,它们就随着结束了。

#1.4-3 设置daemon执行完结束的方法

import multiprocessing
import time

def worker(interval):
    print("work start:{0}".format(time.ctime()));
    time.sleep(interval)
    print("work end:{0}".format(time.ctime()));

if __name__ == "__main__":
    p = multiprocessing.Process(target = worker, args = (3,))
    p.daemon = True
    p.start()
    p.join()
    print "end!"

结果

 

 

work start:Tue Apr 21 22:16:32 2015
work end:Tue Apr 21 22:16:35 2015
end!

 

 

 

转载于:https://www.cnblogs.com/alan-babyblog/p/5339501.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109099.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SM4 加密算法_des加密算法流程

    SM4 加密算法_des加密算法流程SM4加密算法密码算法中常用的一些数据单位:位/比特/bit:指一个二进制位。字节/byte:1字节=8位[公式]字/word:1字=4字节=32位[公式]SM4是一种分组密码算法,其分组长度为128位(即16字节,4字),密钥长度也为128位(即16字节,4字)。其加解密过程采用了32轮迭代机制(与DES、AES类似),每一轮需要一个轮密钥(与DES、AES类似)。加密过程分为两步,由32次轮迭代和1次反序变换组成。SM4的解密过程与加密过程完全相同,也包括32轮迭代和一次反序变换。只

    2022年10月6日
    1
  • MethodFilterInterceptor和AbstractInterceptor的比较

    MethodFilterInterceptor和AbstractInterceptor的比较在编写自定义拦截器的时候,需要继承AbstractInterceptor或者MethodFilterInterceptor,那么他们有什么不同呢首先查看MethodFilterInterceptor的源代码我们发现MethodFilterInterceptor也是继承了AbstractInterceptor的,并且MethodFilterInterceptor里面定义了两个参数,分别是excl…

    2022年5月14日
    35
  • apt查找软件包_apt download

    apt查找软件包_apt downloadaptitudeshowvsftpd查询vsftpd软件包的所有信息aptitudesearchpkg-pattern模糊检索所需要的软件包aptitudesearch~T查询所有的软件包aptitudesearch~U列出软件仓库中可供更新的软件包aptitudesearch~i列出系统中已经安装的软件包…

    2025年7月16日
    3
  • 远程服务器mstsc命令,远程桌面连接命令mstsc怎么用

    远程服务器mstsc命令,远程桌面连接命令mstsc怎么用现在经常在家远程办公,肯会使用到远程桌面连接命令mstsc远程管理电脑或者服务器,,远程桌面连接命令mstsc的使用还是很简单的。但是对于没用过远程桌面连接命令的人来说,首次使用可能连需要进行设置都不清楚。小编在这将远程桌面连接命令mstsc的使用方法进行详细介绍首先需要对被远程控制的电脑A进行设置:1  在电脑A上点击【开始】—【控制面板】,找到【用户帐户】,点击进入后为当前用户账户创建密码,输…

    2025年5月26日
    1
  • HibernateTemplate的使用[通俗易懂]

    HibernateTemplate的使用[通俗易懂]HibernateTemplate提供了非常多的常用方法来完成基本的操作,比如增加、删除、修改及查询等操作,Spring2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。  下面是HibernateTemplate的常用方法。  delete(Objecten

    2022年6月29日
    31
  • 久坐提醒软件_久坐提醒app安卓版

    久坐提醒软件_久坐提醒app安卓版作为苦逼的程序员,每天都要久坐好多个小时,经常一不小心一天就过去了,一直坐着对腰非常不友好,在网上搜了几个久坐提醒的软件,都不太合适自己用,干脆就自己写了个软件,定时提醒自己起来休息一下。软件可自定义提醒的时间间隔,界面可点击开始计时、停止计时,重新开始计时,可设置开程序自动开始计时,最小化可隐藏到托盘,界面按钮均支持快捷键,支持windows消息提醒。最近自己一直在使用,以后有空再更新一些内容,让软件更好用一点。使用环境:Windows,dotnetframework4.5.1快捷键:开始

    2022年10月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号