Python中使用多进程复制文件

使用fork()函数创建父子进程,父进程复制文件的前半部分,子进程复制文件的后半部分

#!/usr/bin/python
#coding=utf-8
import sys,os
#将第一参数作为源文件,以读写模式打开
try:                       
    fd_src = open(sys.argv[1],'r+')
except:
    print "open fd_src failed"

fd_src.seek(0,2)            # 将指针指到文件末尾
size = fd_src.tell()       # 将文件末尾的指针位置赋值给size,size即为文件的总大小


try:                          # 将第二参数作为目标文件以读写模式创建并打开
    fd_dst = open(sys.argv[2],'w+')
except:
    print "open fd_dst failed"

size /= 2

pid = os.fork()

if pid < 0:
    print "fail to fork"
    exit(-1)
elif pid == 0:           #子进程,用来复制文件的后半部分
    pass
    fd_src.close()        #将两个文件重新打开,游标调整到文件的中间
    fd_dst.close()
    fd_src = open(sys.argv[1],'r+')
    fd_dst = open(sys.argv[2],'w+')
    fd_src.seek(size,0)
    fd_dst.seek(size,0)

    while True:
        buf = fd_src.readline()
        if buf == '':
            break
        fd_dst.write(buf)
    exit(0)

else:                                  #父进程,用来复制文件的前半部分
    num = 0
    fd_src.seek(0,0)
    fd_dst.seek(0,0)
    print  'siza:',size
    while True:
        buf = fd_src.readline(1)
        num += len(buf)
        if num <= size:
            fd_dst.write(buf)
        else:
            break
    os.wait()
    exit(0)

你可能感兴趣的:(python小项目)