python 进程

python 进程

# -*- coding: utf-8 -*-
import multiprocessing
import os
import time
def sing(name,num):
    for i in range(num):
        print('%s is sing'%(name))
        time.sleep(1)
def dance(name,num):
    for i in range(num):
        print('%s is dance'%(name))
        time.sleep(1)
if __name__=='__main__':
    #1.创建子进程对象
    #args:元组方式传参,kwargs:字典方式传参
    sing_process=multiprocessing.Process(target=sing,args=('小明',3,))#元组一个元素一定要用’,‘
    dance_process=multiprocessing.Process(target=dance,kwargs={'name':'小红','num':3})#传入的形参要用‘’引起来
    #2.使用子进程
    sing_process.start()
    dance_process.start()
  • 获取进程编号
import os
os.getpid()#获取当前进程编号
os.getppid()#获取父进程编号
  • 守护主进程(主进程关闭,子进程没执行完也关闭)
sing_process.daemon = True
  • 案例(多进程拷贝)
import os
import multiprocessing
source_dir='xxx\xxx'#源文件夹
dest_dir='xxx/xxx'#目标文件夹
#建立目标文件夹
try:
    os.mkdir(dest_dir)
except:
    print('目标文件夹已存在')
# file_list是源文件夹下的子文件夹和文件的列表
file_list=os.listdir(source_dir)
#遍历文件列表实现拷贝
for file_name in file_list:
    sub_process=multiprocessing.Process(target=copy_file,args=(file_name,source_dir,dest_dir))
    sub_process.start()

拷贝函数

def copy_file(file_name,source_dir,dest_dir):
    #拼接文件完整路径
    source_path=os.path.join(source_dir,file_name)
    dest_path=os.path.join(dest_dir,file_name)
    #打开源文件和目标文件
    with open(source_path,'rb') as source_file:
        with open(dest_path,'wb') as dest_file:
            while True:
                data=source_file.read(1024)#每次读1k的数据
                if data:
                    dest_file.write(data)
                else:
                    break
posted @   田哥  阅读(32)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示