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

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()

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值