2023-3-26笔记:linux相关,进程与线程

椒盐猕猴桃 椒盐猕猴桃     2023-04-03     115

关键词:

vim

简介

末行模式命令:

:w 保存

:wq 保存并退出

:x 保存并退出

:q! 不保存,强制退出

多进程

基础使用

import multiprocessing
import time

def coding():
    for i in range(3):
        print("crazy coding")
        time.sleep(0.2)

def music():
    for i in range(3):
        print("happy music")
        time.sleep(0.2)

if __name__ == '__main__':
    coding_process = multiprocessing.Process(target=coding)
    music_process = multiprocessing.Process(target=music)

    coding_process.start()
    music_process.start()

参数传递

args:以元祖的方式传递,单个参数记得添加逗号

kwargs:以字典形式传递

import multiprocessing
import time

def coding(num):
    for i in range(num):
        print("crazy coding")
        time.sleep(0.2)

def music(count):
    for i in range(count):
        print("happy music")
        time.sleep(0.2)

if __name__ == '__main__':
    coding_process = multiprocessing.Process(target=coding, args=(3,))
    music_process = multiprocessing.Process(target=music, kwargs="count": 3)

    coding_process.start()
    music_process.start()

获取进程编号

依赖os模块

os.getpid():获取进程编号

os.getppid():获取父进程编号

# -*- coding:utf-8 -*-

import multiprocessing
import time
import os

def coding(num):
    print("主进程 %d" % os.getppid())
    print("子进程 %d" % os.getpid())
    for i in range(num):
        print("crazy coding")
        time.sleep(0.2)

def music(count):
    print("主进程 %d" % os.getppid())
    print("子进程 %d" % os.getpid())
    for i in range(count):
        print("happy music")
        time.sleep(0.2)

if __name__ == '__main__':
    print("主进程 %d" % os.getpid())

    coding_process = multiprocessing.Process(target=coding, args=(3,))
    music_process = multiprocessing.Process(target=music, kwargs="count": 3)

    coding_process.start()
    music_process.start()

进程之间不共享全局变量

import multiprocessing
import time

my_list = []

def write_data():
    for i in range(3):
        my_list.append(i)

    print(f"write:my_list")

def read_data():
    print(f"read:my_list")

if __name__ == '__main__':

    write_pro = multiprocessing.Process(target=write_data)
    read_pro = multiprocessing.Process(target=read_data)

    write_pro.start()
    time.sleep(1)
    read_pro.start()

主进程与子进程关系

在下面的情况下,主进程结束子进程不会结束

import multiprocessing
import time

def work():
    for i in range(10):
        print("working...")
        time.sleep(0.2)

if __name__ == '__main__':
    work_pro = multiprocessing.Process(target=work)
    work_pro.start()

    time.sleep(1)

    print("ending")

输出:

working...
working...
working...
working...
working...
ending
working...
working...
working...
working...
working...

主进程结束子进程立即结束的方法

import multiprocessing
import time

def work():
    for i in range(10):
        print("working...")
        time.sleep(0.2)

if __name__ == '__main__':
    work_pro = multiprocessing.Process(target=work)
    #第一种 守护主进程
    #work_pro.daemon = True
    work_pro.start()

    time.sleep(1)
    #第二种 销毁子进程
    work_pro.terminate()
    print("ending")

多线程

基本使用

import threading
import time

def coding():
    for i in range(3):
        print("crazy coding")
        time.sleep(0.2)

def music():
    for i in range(3):
        print("happy music")
        time.sleep(0.2)

if __name__ == '__main__':
    thread_code = threading.Thread(target=coding)
    music_code = threading.Thread(target=music)

    thread_code.start()
    music_code.start()

线程传参

args:元祖形式传参

kwargs:字典形式传参

import threading
import time

def coding(num):
    for i in range(num):
        print("crazy coding")
        time.sleep(0.2)

def music(count):
    for i in range(count):
        print("happy music")
        time.sleep(0.2)

if __name__ == '__main__':
    thread_code = threading.Thread(target=coding, args=(3,))
    music_code = threading.Thread(target=music, kwargs="count": 3)

    thread_code.start()
    music_code.start()

结束战斗!每天进步一点点

《linux内核设计与实现》读书笔记linux进程管理(代码片段)

进程与线程①进程就是处于执行期的程序,通常进程还包含挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,还包含存放全局变量的数据段等。②线... 查看详情

《linux内核设计与实现》读书笔记linux进程管理(代码片段)

进程与线程①进程就是处于执行期的程序,通常进程还包含挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,还包含存放全局变量的数据段等。②线... 查看详情

c++笔记--linux编程(13)-守护进程-线程(代码片段)

目录进程组 概念和特性进程组操作函数(了解)会话创建会话getsid函数pid_tsetsid()会话和进程总结守护进程创建守护进程模型进程与线程线程标识线程调用线程创建pthread_create示例线程终止单个线程通过以下三种方式退出 线程退出... 查看详情

《linux内核设计与实现》笔记——内核同步简介

相关概念竞争条件多个执行线程(进程/线程/中断处理程序)并发(并行)访问共享资源,因为执行顺序不一样造成结果不一样的情况,称为竞争条件(racecondition)举例说明#include<thread>usingnamespacestd;inti=0;voidthread1(){//for(intx=0;x&... 查看详情

os学习笔记进程与线程

OS学习笔记(8)进程与线程这篇笔记对应的王道OS2.1进程与线程文章目录OS学习笔记(8)进程与线程2.1_1进程的概念、组成、特征知识总览为什么要引入进程进程VS程序进程的组成PCB程序段、数据段总结图进程的定义进程的特征知识回... 查看详情

linux多线程(代码片段)

...进程地址空间布局四、Linux线程互斥1、进程线程间的互斥相关背景概念2、互斥量mutex(锁)3、互斥量的接口五、可重入VS线程安全1、概念2、常见的线程不安全的情况3、常见的线程安全的情况4、常见不可重入的情况5、常... 查看详情

linux多线程(代码片段)

...进程地址空间布局四、Linux线程互斥1、进程线程间的互斥相关背景概念2、互斥量mutex(锁)3、互斥量的接口五、可重入VS线程安全1、概念2、常见的线程不安全的情况3、常见的线程安全的情况4、常见不可重入的情况5、常... 查看详情

王道操作系统笔记————进程与线程(代码片段)

文章目录一、进程的概念和特征1.1进程的概念1.2进程的组成1.3进程的特征1.4进程的状态与转换1.5进程控制1.6进程的通信1.6.1共享存储1.6.2消息传递1.6.3管道通信1.7父进程与子进程二、线程概念和多线程模型2.1线程的概念2.2线程的属... 查看详情

linux线程操作以及相关知识(代码片段)

1线程◼与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,... 查看详情

进程与线程相关的介绍

进程:进程是指在系统中正在运行的一个应用程序,比如同时打开微信和QQ,系统会分别启动两个进程每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间中 线程:一个进程要想执行任务,必须得有线程(... 查看详情

操作系统笔记二进程管理进程与线程(代码片段)

文章目录多道程序设计Multi-programming进程的引入Process进程的概念进程状态及状态转换进程控制UNIX有关进程的系统调用命令线程与轻进程Threadandlight-weightedprocess线程的引入线程的实现多道程序设计Multi-programming多道程序设计目标&#x... 查看详情

[other]面试复习笔记:线程与进程复习

基本概念1.进程的基本概念线程(thread)是进程(processes)中某个单一顺序的控制流,也被称为轻量进程(lightweightprocesses)。进程是表示资源分配的基本单位,又是调度运行的基本单位。比如:用户运行自己的程序,系统就创建一个进... 查看详情

嵌入式与linux(五):linux线程

...457/article/details/89371217【嵌牛导读】本文介绍了Linux线程的相关信息【嵌牛鼻子】Linux线程【嵌牛提问】在了解Linux系统后,能否具体介绍线程的概念?【嵌牛正文】类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助... 查看详情

2023.3.26——第一次结队作业

...今天,尝试了将基本的功能在地铁app上实现。时间记录:2023.3.13,15:42:36——2023.3.13,18:39:022023.3.14,15:54:00——2023.3.14,18:20:452023.3.15,13:00:00——2023.3.15,21:19:002023.3.16,08:02:04——2023.3.16,09:20:00;2023.3.16,18:00:00——2023.3.16,... 查看详情

操作系统学习笔记进程与线程模型

进程可以说是操作系统最为核心的一个抽象,而线程可以认为是一种轻量级的进程,或者说一个进程内的多个迷你进程。一、进程的模型进程(process):进程是一个正在运行的程序的实例。对于一个单核的处理器,每个时刻只能运... 查看详情

操作系统进程与线程(代码片段)

目录1.进程基础1.1相关知识1.2进程定义与特征1.3进程的状态以及转换2.进程控制2.1进程执行模式2.2进程切换2.3进程创建2.4进程撤销2.5进程的阻塞与唤醒3.线程3.1线程的引入3.2与进程的区别与联系4.进程与线程其他内容4.1相关技术1.... 查看详情

多线程编程学习笔记

多线程编程目录线程概述线程的创建创建线程程序线程同步守护线程线程之间的相互通讯线程池和java.util.concurrent包一、概述1.相关概念进程(Process):程序(任务)执行的过程,每个进程都有自己独立的一块内存空间,一个进程中可... 查看详情

多线程(上)(代码片段)

...?线程终止分离线程Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口初始化互斥量销毁互斥量mutex的理解互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见不... 查看详情