426python进程

import multiprocessing

'''
# ① 导入进程包
import multiprocessing
# 定义一个music函数
import time

def music(num):
    for i in range(num):
        print('听音乐')
        time.sleep(0.2)


#定义一个coding函数
def coding(t):
    for i in range(3):
        print('敲代码')
        time.sleep(t)

#
# if __name__ =='__main__':
#     music()
#     coding()
if __name__ == '__main__':
    music_process = multiprocessing.Process(target=music,args=(3,))# 元组传参
    coding_process = multiprocessing.Process(target=coding,kwargs={'t':0.2})#不定长字典传参

    music_process.start()
    coding_process.start()

'''

# 获取进程编号 使用os
import os


# pid = os.getpid()
# print(pid)
#
# time.sleep(3)

# 方案2  使用multiprocessing获取pid
# pid = multiprocessing.current_process().pid
# print(pid)
# time.sleep(20)

def work():
    print('执行work任务。。。')
    # 获取当前进程编号pid
    pid = os.getpid()
    print(f'work子进程编号为{pid}')
    # 获取父进程编号ppid
    ppid = os.getpid()
    print(f'work父进程编号为{ppid}')


#
# if __name__ == '__main__':
#     print(f'main程序执行入口中主进程编号{os.getpid()}')
#     sub_process=multiprocessing.Process(target=work)
#     sub_process.start()

'''
# 杀掉进程
pid = os.getpid()

# 第一个参数 进程pid  第二个参数 signal和操作系统有关,9是强制删除,15正常结束
os.kill(pid,9)

'''

# 1、进程间不共享全局变量
import multiprocessing
import time

my_list = []


def write_data():
    for i in range(3):
        my_list.append(i)
        print('add:', i)
    print(my_list)


def read_data():
    print('read_data', my_list)


if __name__ == '__main__':
    # 创建写入数据进程
    write_process = multiprocessing.Process(target=write_data)
    # 创建读取数据进程
    read_process = multiprocessing.Process(target=read_data)

    # 启动进程执行相关任务
    write_process.start()
    time.sleep(1)
    read_process.start()

# 2、主进程与子进程的结束顺序
import multiprocessing
import time


# 工作函数
def work2():
    for i in range(10):
        print('工作中...')
        time.sleep(0.2)


if __name__ == '__main__':
    # 创建子进程
    work_process = multiprocessing.Process(target=work2)
    # 方案一:守护主进程
    # work_process.daemon=True
    # 启动子进程
    work_process.start()

    # 延迟1s
    time.sleep(1)
    # 方案二 让子进程直接销毁,表示终止执行, 主进程退出之前,把所有的子进程直接销毁就可以了
    work_process.terminate()
    print('主进程执行完毕')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值