53.Python进阶_进程03_常用方法

multiprocessing常用方法:
  • target:如果传递了函数的引用;
  • args:给target指定的函数传递的参数,已元组的方式传递;
  • kwargs:给target指定的命名参数;
  • name:给进程设定名字
Process创建的实例对象常用方法:
  • start():启动子进程实例
  • is_alive():判断子进程对象是否还激活;
  • join():等待子进程
  • terminate():不管任务是否完成,立即终止子进程
Process创建的实例对象常用属性
  • name:当前进程的别名;
  • pid:当前进程的pid

发现大部分都和之前的线程类似,只有 terminate()终止子进程是特殊的:

terminate()

rom multiprocessing import Process
import time
class MyProcess(Process):
    def __init__(self,file):
        super().__init__()
        self.file = file
    def run(self):
        with open(self.file,'a',encoding='utf8') as f:
            for i in range(2):
                time.sleep(0.5)
                print(F'{self.file}正在第{i}次写入')
                f.write('java-')

if __name__ == '__main__':
    ps = []
    for i in range(2):
        p = MyProcess('test2.txt')
        p.start()
        ps.append(p)
    ps[0].terminate()  #终止子进程

运行结果:

test2.txt正在第0次写入
test2.txt正在第1次写入

test2.txt中写入内容为:

java-java-

可见该方法会直接终止运行;

查看进程ID

  1. self.pid
  2. os.getpid()
from multiprocessing import Process
import time
class MyProcess(Process):
    def __init__(self,file):
        super().__init__()
        self.file = file
    def run(self):
        with open(self.file,'a',encoding='utf8') as f:
            for i in range(2):
                time.sleep(0.5)
                print(F'进程pid{self.pid}正在给{self.file}正在第{i}次写入')
                f.write('java-')

if __name__ == '__main__':
    ps = []
    for i in range(2):
        p = MyProcess('test4.txt')
        p.start()
        ps.append(p)

运行结果:

进程pid3076正在给test4.txt正在第0次写入
进程pid7500正在给test4.txt正在第0次写入
进程pid3076正在给test4.txt正在第1次写入
进程pid7500正在给test4.txt正在第1次写入
from multiprocessing import Process
import time
import os

def work1():
    for i in range(6):
        time.sleep(1)

        print(F'-----pid{os.getpid()}在执行任务1-------')

def work2(name):
    for i in range(5):
        time.sleep(1)
        print(F'-----进程pid{os.getpid()}{name}在执行任务1-------')

if __name__ == '__main__':
    p1 = Process(target=work2,args=('小静',))
    p1.start()
    work1()

运行结果:

-----pid4736在执行任务1-------
-----进程pid11712小静在执行任务1-------
-----pid4736在执行任务1-------
-----进程pid11712小静在执行任务1-------
-----pid4736在执行任务1-------
-----进程pid11712小静在执行任务1-------
-----pid4736在执行任务1-------
-----进程pid11712小静在执行任务1-------
-----pid4736在执行任务1-------
-----进程pid11712小静在执行任务1-------
-----pid4736在执行任务1-------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值