免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2773 | 回复: 7
打印 上一主题 下一主题

多进程删除文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-22 16:13 |只看该作者 |倒序浏览
功能很简单 就是在一个目录下面把许多的文件删除掉  用4个进程删除

但跑的有问题。。。 谁帮忙看看

import multiprocessing
import os
import time
def printid():
    print os.getppid()
    print os.getpid()
def func():
    printid()
    files=os.listdir('/home/data/')
    for i in files:
        os.remove('/home/data/'+ i)
        print i + "deleted"
        time.sleep(1)
    print "die"

if __name__ == "__main__":
    printid()
    pool = multiprocessing.Pool(processes=4)
    for i in xrange(3):

        pool.apply_async(func)
    pool.close()
    pool.join()
    print "Sub-process(es) done."
~

论坛徽章:
0
2 [报告]
发表于 2015-01-22 16:18 |只看该作者
感觉是四个进程干的是相同的事情  根本就没有并行处理
估计要在func里面加入一些条件。。

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
3 [报告]
发表于 2015-01-22 17:07 |只看该作者
你也没说清楚会有什么问题,我觉得你可以这样,删除的时候多进程删除,而不是遍历文件的时候多进程执行,因为可能4个进程都遍历到了文件
然后其中某个文件被某一个进程删除了,下一个进程尝试删除的时候,发现文件已经没有了,就报错了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
4 [报告]
发表于 2015-01-22 22:21 |只看该作者
pdb 看下 ?

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
5 [报告]
发表于 2015-01-23 09:42 |只看该作者
3F   说的对

论坛徽章:
0
6 [报告]
发表于 2015-01-23 10:48 |只看该作者
本帖最后由 c11v11 于 2015-01-23 10:49 编辑

哈哈 搞好了  要把所有的文件放在pool里面 然后用多个进程对他们处理
import multiprocessing
import os
import time
def printid():
#    print os.getppid()
    print os.getpid()
def func(msg):
    printid()
    os.remove('/home/data/' + msg)
    print msg + "deleted"
  #  time.sleep(1)
    print "die"

if __name__ == "__main__":
    printid()
    pool = multiprocessing.Pool(processes=10)
    files=os.listdir('/home/data/')
    for i in files:
   # for i in xrange(10):
        pool.apply_async(func,(i,))
    pool.close()
    pool.join()
    print "Sub-process(es) done."

论坛徽章:
0
7 [报告]
发表于 2015-01-23 10:55 |只看该作者
1000 个文件  用10个进程去删除 每个进程差不多能删除100来个 不错哦

论坛徽章:
0
8 [报告]
发表于 2015-01-23 11:00 |只看该作者
相当有成就感。。。删的刷刷快。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP