栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

从零开始学习机器学习之python基础|python进程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从零开始学习机器学习之python基础|python进程

文章目录
  • 一、进程
    • 1.什么是进程?
    • 2.创建进程
    • 3.进程传参
    • 4.start()使用进程
    • 5.os.kill()杀死进程
    • 6.获取进程id
    • 7.休眠进程
    • 8.进程使用以及传参例子
    • 9.进程不共享全局变量
    • 10.join()阻塞等待
    • 11.主进程会等待子进程结束后才会结束
    • 12.让子进程随主进程结束而结束


一、进程 1.什么是进程?
  • 运行的软件或者程序
  • 一个程序至少有一个进程,一个进程至少有一个线程
  • 进程之间的执行是无序的,他是由操作系统调度决定的,操作系统调度哪个进程,哪个进程就先执行,没有调度的进程不能执行
2.创建进程
import multiprocessing
process = multiprocessing.Process(target=,args=/kwargs=)
3.进程传参

target:进程名字
args:元组
kwargs:字典

4.start()使用进程

process.start()

5.os.kill()杀死进程

import os
os.kill(进程id,9)# 9为固定值

6.获取进程id
  • os.getpid()获取子进程id
  • os.getppid()获取父进程id
  • multiprocessing.current_process().pid获取当前进程id
7.休眠进程

time.sleep(秒数)

8.进程使用以及传参例子
# 进程使用以及传参
def sing(singer, song):
    print('sing:',os.getppid(), multiprocessing.current_process().name)
    print(f'{singer}唱{song}')
    for i in range(5):
        print('singing')
        time.sleep(0.1)

def dance(dancer, name):
    print('dance:', multiprocessing.current_process().name,os.getppid())
    print(f'{dancer}跳{name}')
    for i in range(5):
        print('dancing')
        time.sleep(0.1)
        # os.kill(进程id,9)杀死指定进程
        os.kill(os.getpid(), 9)

if __name__ == '__main__':
    print('main:',multiprocessing.current_process().name)
    process_sing = multiprocessing.Process(target = sing, args=('德华','我的老家'))
    process_dance = multiprocessing.Process(target = dance,kwargs={'dancer':'彭丽','name': '进屋们'})
    process_dance.start()
    process_sing.start()
    # os.kill(multiprocessing.current_process().pid,9)
9.进程不共享全局变量 10.join()阻塞等待

代码书写在哪个进程中哪个进程阻塞等待
哪个进程对象.join(),就是等待哪个进程执行

import multiprocessing
data_list = []
def add_data():
    for i in range(5):
        data_list.append(i)
        time.sleep(0.1)
    print('add_data',data_list)


def read():
    print('read:',data_list)

if __name__ == '__main__':
    process_add = multiprocessing.Process(target=add_data)
    process_read = multiprocessing.Process(target=read)

    process_add.start()
    process_add.join()#阻塞主进程,等add进程执行结束(会间接影响read进程)
    process_read.start()

11.主进程会等待子进程结束后才会结束
def func():
    for i in range(5):
        print(i)
        time.sleep(0.5)
    print("子进程代码结束")

if __name__ == '__main__':
    process_func = multiprocessing.Process(target=func)
    process_func.start()
    time.sleep(1)
    print("主进程代码结束")
12.让子进程随主进程结束而结束
  • 1.process.terminate()
  • 2.将子进程设置为daemon进程(要在start()之前使用)
    process_func.daemon = True
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947537.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号