【Python】--实现多进程

import multiprocessing
import time
# 1.定义好函数
# codeing
def coding():
    for i in range(10):
        print(f'正在编写第{i}行代码')
        time.sleep(0.2)


# music
def music():
    for i in range(10):
        print(f'正在听第{i}首歌曲')
        time.sleep(0.2)

单任务

# 单任务--时间为4s多
if __name__ == '__main__':
    t1 = time.time()
    coding()
    music()
    t2 = time.time()
    print(t2-t1)

使用multiprocessing库 使用多进程

# 多任务--时间为2s多
if __name__ == '__main__':
    t1 = time.time()
    # 创建子进程
    p1 = multiprocessing.Process(target=coding)
    p2 = multiprocessing.Process(target=music)
    # 启动子进程
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    t2 = time.time()
    print(t2 - t1)

Process进程类的说明

  1. 导入进程包
    import multiprocessing
  2. 通过进程类创建进程对象
    进程对象 = multiprocessing.Process()
  3. 启动进程执行任务
    进程对象.start()

Process([group [, target [, name [, args [, kwargs]]]]])

参数说明
group通常设置为 None,为将来扩展保留,目前无作用
target要在子进程中运行的函数(函数对象,而不是函数调用)
args传递给 target 函数的位置参数,必须是元组,哪怕只有一个元素也要加逗号,例如 (arg1,)
kwargs传递给 target 函数的关键字参数(字典)
name给进程取一个名字(可选),默认是 “Process-N”,N是编号
daemon设置为 True 时,表示该进程是守护进程,主进程退出时它也会退出。必须在 start() 之前设置

Process创建的实例对象的常用方法:

  • start():启动子进程实例(创建子进程) 让任务执行起来 [发动机]
  • join():等待子进程执行结束 ,阻塞主进程,防止子进程还没运行完,主进程结束,导致子进程结束

Process创建的实例对象的常用属性:

name:当前进程的别名,默认为Process-N,N为从1开始递增的整数

获取进程编号
获取当前进程编号

os.getpid() 表示获取当前进程编号

获取当前父进程编号

os.getppid() 表示获取当前父进程编号

import os
import time

# 1.定义好函数
# codeing
def coding(name,num):
    for i in range(num):
        print(f'{name}正在编写第{i}行代码')
        time.sleep(0.2)
    print(f'coding现在的进程是{os.getpid()}')
    print(f'coding的父进程是{os.getppid()}')
# music
def music(name,count):
    for i in range(count):
        print(f'{name}正在听第{i}首歌曲')
        time.sleep(0.2)
    print(f'music现在的进程是{os.getpid()}')
    print(f'music的父进程是{os.getppid()}')

# 多进程---时间为2s多
import multiprocessing
if __name__ == '__main__':
    t1 = time.time()
    # 创建子进程
    p1 = multiprocessing.Process(target=coding,name='a',args=('浩浩',5))
    p2 = multiprocessing.Process(target=music,name='b',kwargs={'name':'浩浩','count':8})
    # 启动子进程
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    t2 = time.time()
    print(t2 - t1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值