python模块学习(multiprocessing模块)

学习版本3.5.2

multiprocessing模块跟threading模块非常相似,只是multiprocessing用的进程而threading用的线程。

Process类,这个类跟threading模块的Thread类非常相似。

Process比Thread多一个pid,在进程没有start的时候pid为None。

Process比Thread多了个terminate(self)方法,发送信号告诉说该进程已经完成了。

实验代码:没用terminate和join方法

#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

from multiprocessing import Process
import time

class myprocess(Process):
    def run(self):
        print("begin pid:", self.pid)
        time.sleep(5)
        print("end pid:", self.pid)

if __name__ == "__main__":
    processlist = []
    for i in range(5):
        t = myprocess()
        processlist.append(t)

    for t in processlist:
        t.start()

    #processlist[0].terminate()

    #processlist[0].join()
    print("main")

运行结果

begin pid: 10684
begin pid: 10685
begin pid: 10686
main
begin pid: 10687
begin pid: 10688
end pid: 10684
end pid: 10685
end pid: 10686
end pid: 10687
end pid: 10688

使用terminate(self)方法

#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2

from multiprocessing import Process
import time

class myprocess(Process):
    def run(self):
        print("begin pid:", self.pid)
        time.sleep(5)
        print("end pid:", self.pid)

if __name__ == "__main__":
    processlist = []
    for i in range(5):
        t = myprocess()
        processlist.append(t)

    for t in processlist:
        t.start()

    processlist[0].terminate()

    processlist[0].join()
    print("main")

运行结果

begin pid: 10692
begin pid: 10693
begin pid: 10694
main
begin pid: 10695
begin pid: 10696
end pid: 10694
end pid: 10693
end pid: 10695
end pid: 10696

在使用了terminate(self)方法之后,该进程就已经退出了,所以使用join()方法是没有效果的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值