当前位置: 首页 > 知识库问答 >
问题:

python样板管挂起并带有多个处理

娄阳舒
2023-03-14

我试图运行boilertube与Python多重处理。这样做可以解析来自多个源的RSS提要。问题是它在处理一些链接后挂在其中一个线程中。如果我删除池并在循环中运行,整个流程就会工作。

这是我的多处理代码:

proc_pool = Pool(processes=4)
for each_link in data:
    proc_pool.apply_async(process_link_for_feeds, args=(each_link, ), callback=store_results_to_db)
proc_pool.close()
proc_pool.join()

这是在process_link_for_feeds()中调用的boilertube代码:

def parse_using_bp(in_url):
    extracted_html = ""
    if ContentParser.url_skip_p.match(in_url):
        return extracted_html
    try:
        extractor = Extractor(extractor='ArticleExtractor', url=in_url)
        extracted_html = extractor.getHTML()
        del extractor
    except BaseException as e:
        print "Something's wrong at Boilerpipe -->", in_url, "-->", e
        extracted_html = ""
    finally:
        return extracted_html

我不知道它为什么会挂起来。proc\u池code中是否有错误?

共有1个答案

潘兴朝
2023-03-14

你能试试穿线吗?多处理基本上适用于CPU受限的情况。此外,boilerpipe已经在使用线程时提供了保护,这表明它在多处理中也可能需要保护。

如果您真的需要mp,我将尝试找出如何修补样板管。

下面是我猜想的使用线程的替代品。它使用多处理。水塘线程池(这是一个“假”多处理池)。唯一的变化来自Pool(..) 多处理。水塘线程池(…) 问题在于,我不确定boilerpipe多线程测试是否会检测到线程池()具有activeCount()

import multiprocessing
from multiprocessing.pool import ThreadPool  # hidden ThreadPool class

# ...
proc_pool = ThreadPool(processes=4)  # this is the only difference
for each_link in data:
    proc_pool.apply_async(process_link_for_feeds, args=(each_link, ), callback=store_results_to_db)
proc_pool.close()
proc_pool.join()

 类似资料:
  • 我甚至不能使用Python 2.7中运行的多重处理包(使用spyder作为窗口上的用户界面)进行并行处理的最简单的例子,我需要帮助解决这个问题。我已经运行了conda更新,所以所有的包都应该是最新的和兼容的。 即使多处理软件包文档(如下所示)中的第一个示例也不起作用,它会生成4个新进程,但控制台只是挂起。在过去的3天里,我已经尝试了我能找到的一切,但是没有一个不挂起就运行的代码能够将我25%以上的

  • 问题内容: 我正在尝试将一些代码从Python 3.6移植到Windows 10上的Python 3.7。我看到在调用该对象时多处理代码挂起。有问题的代码要复杂得多,但是我将其简化为类似于以下程序的代码。 此代码也可以在Python 2.7中运行。出于某些原因,第一个调用在3.7中挂起,但是在其他版本上一切正常。 问题答案: 我觉得这是描述在Python 3.7.2回归这里。它似乎仅在virtua

  • 问题内容: 在Go模板中,有时将正确的数据传递到正确的模板的方式令我感到尴尬。用流水线参数调用模板看起来就像只用一个参数调用函数。 假设我有一个Gophers网站,有关Gophers。它具有一个主页主模板和一个用于打印Gophers列表的实用程序模板。 http://play.golang.org/p/Jivy_WPh16 输出: 现在,我想在子模板中添加一些上下文:在列表内以不同的方式设置名称“

  • 我正在使用boilerpipe从html中获取文本。然而,有一些问题我还没有解决。我有一个50k元素的列表。我正在创建一个包含1000个元素的rdd,然后对它们进行处理,并将结果rdd保存在hdfs中。我遇到的错误是: 在hdfs文件中,前1000个元素的结果被保存,但继续下去会抛出上述错误。这个问题有什么解决办法?

  • 所以,长话短说,最新版本的Apache在我的特定设置中引起了一些错误,所以我快速升级到PHP 7.1.6,交换到mpm-event,并开始使用PHP-FPM。我猜它可能也在那里的某个地方重新安装了MySQL。 升级后,我的WordPress网站的前端看起来相对不错。管理仪表板有时还可以,但如果经常尝试发布新页面或执行类似操作,它将无限期挂起。如果我重新启动Apache,它会重新引起人们的注意,但除

  • null null 任何解决问题的帮助/指针都是非常感谢的。 谢谢,哈尔·克里尚