- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 15195775117 于 2020-12-23 16:03 编辑
一、需求缘起
昨天写了个FTP文件传输程序,19.1个小时拷来了1.17G的数据,
17k/s的速度,闻者伤心,见者流泪!
但是,这并非完全是网络的原因,我拷的文件体积小、数量庞大,大量的时间应该消耗在了频繁的文件写入过程。
关于写文件过程的耗时,以前我也发现过,是不可忽视的。
由于现在我还不知道如何实现FTP远程文件夹压缩打包,所以眼下我能想到的加速方法就只有多进程、多线程了。
二、初识进程
什么是进程(Process)?
资源管理器中,进程就是各种运行中的程序exe
所谓多任务,即多进程
进程工具有2个:模块multiprocessing,Pool进程池
以下程序研究multiprocessing
from multiprocessing import Process
import time
# Process类表示进程对象
# 语法:
# Process(groug,#默认None
# target,#当前进程启动时执行的可调用对象
# name,#当前进程实例的别名
# args,#传递给target函数的参数元组
# kwargs)#传递给target函数的参数字典
#子进程x=5表示每隔2s从1打印到5
def test(x):
print('子进程开始',x)
for i in range(1,x+1):
print(i)
time.sleep(2)
print('子进程结束')
def main():
print('主进程开始')
p=Process(target=test,args=(5,))
p.start()#启动子进程,执行test
print('进程是否在执行中:',p.is_alive())
print('当前进程别名:',p.name)#别名格式默认为Process-N
print('当前进程PID值:',p.pid)
#p.join([3]) #等待进程结束,等3秒(怎么用?)
#p.run() #如果没有给定target参数,使用start方法时将执行p的run方法(?)
time.sleep(3)
print('终止进程')
p.terminate()
if __name__ == '__main__':
main()
print('结束')
#在命令行执行才会显示子进程的内容,
#__name__ == '__main__'也是必须的
# 打印结果:
# 主进程开始
# 进程是否在执行中: True
# 当前进程别名: Process-1
# 当前进程PID值: 3612
# 子进程开始 5
# 1
# 2
# 终止进程
# 结束
|
评分
-
查看全部评分
|