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

浙公网安备 33010602011771号