| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2549 人关注过本帖
标题:多进程异步非堵塞的调用问题急
取消只看楼主 加入收藏
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:3 
多进程异步非堵塞的调用问题急
程序代码:
    time.sleep(3)
    queue = Queue()
    New_start = input(('导入批量url文本:'))
    levels = int(input(('设置扫描等级:')))
    countss = int(input(('设置扫描进程数:')))
    p = multiprocessing.Pool(countss)
    list_ = list(set(
        [x.replace('\n', '') if x.startswith('http') else 'http://' + x.replace('\n', '') for x in
         open(New_start, 'r', encoding='UTF-8').readlines()]))
    for i in list_:
        queue.put(i)
        print(i + " -------> 加入队列 当前队列总任务数:%s" % queue.qsize())
    while not queue.empty():
        # 子进程原来跑 进行测试
        p.apply_async(get_url_sql, args=(queue.get(), levels))
    p.close()
    p.join()
    print("当前队列中的任务数为:%s" % queue.qsize())
    while True:
        if queue.qsize() < 10:
            opm = OPMysql()
            sql = "select url from url_index limit 1,20"
            res = opm.op_select(sql)
            _list = [i[j].replace('\r\n', '').replace(' ', '')
                     for i in res for j in i]
            url_list = list(set(_list))
            for i in url_list:
                time.sleep(0.5)
                queue.put(i)
                print(i + " -------> 加入队列 当前队列总任务数:%s" % queue.qsize())
            opm.dispose()  # 释放资源


哥哥们帮帮忙  现在的情况是这样的。。。 自己做了一个下午了
我自己写的想实现多进程异步  子进程取出队列的url跑sql  主进程就是数据库的交互把url放入队列中  但是这样写好像不行 是哪里错了吗
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2019-9-26 16:54编辑过]

搜索更多相关主题的帖子: 进程 队列 queue replace for 
2019-09-26 16:50
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
现在的情况就是一直卡住 动了不动 我用的是from multiprocessing Queue
2019-09-26 16:53
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
回复 3楼 fall_bernana
老哥我按照你的这样写了
程序代码:
    while not queue.empty():
        # 子进程原来跑 进行测试
        p.apply_async(get_url_sql, args=(queue.get(), levels))
        p.apply_async(tttttta, args=(queue,))
    p.close()
    p.join()

还是不行 很着急 弄了一个下午都没好 可能我太笨了 你能不能给个联系QQ 我好问你问题
上面的这样子 结果是加入了队列就直接结束了
图片附件: 游客没有浏览图片的权限,请 登录注册
2019-09-26 18:54
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
回复 4楼 cbd666
tttttta函数封装的是数据库存入队列的操作
程序代码:
def tttttta(qqqq):
    print("当前队列中的任务数为:%s" % qqqq.qsize())
    while True:
        if qqqq.qsize() < 10:
            opm = OPMysql()
            sql = "select url from url_index limit 1,20"
            res = opm.op_select(sql)
            _list = [i[j].replace('\r\n', '').replace(' ', '')
                     for i in res for j in i]
            url_list = list(set(_list))
            for i in url_list:
                time.sleep(0.5)
                qqqq.put(i)
                print(i + " -------> 加入队列 当前队列总任务数:%s" % qqqq.qsize())
            opm.dispose()  # 释放资源
2019-09-26 18:55
快速回复:多进程异步非堵塞的调用问题急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022095 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved