【问题标题】:Python dynamic multiprocessingPython动态多处理
【发布时间】:2015-12-30 00:33:07
【问题描述】:

我是 Python 初学者。我设法在多个并行进程中运行我的函数,但现在我想稍微重构它,我迷路了......

我想做的是:

  1. 使用 1 - x 参数(关键字)运行 main()
  2. main() 应该最大运行。 32/x 并行函数 search() 在每个关键字的单独池中
  3. search() 正在网页上寻找“关键字”字符串,一旦在任何进程(池中)中找到“关键字”,search() 应该返回 url,该 url 将传递给 download() 函数
  4. download() 函数应替换父池中的 search() 函数(就最大并行进程而言),其他池仍应搜索关键字
  5. 对所有其他池重复

例子:

  1. main("stack", "overflow")
  2. 应该有 2 个搜索池,一个用于“堆栈”,第二个用于“溢出”,每个应该有 16 个 search() 进程
  3. 找到关键字“stack”,search() 函数应替换为 16 个 download() 函数;未找到关键字“溢出”,在分离池中继续,分离进程

我当前的脚本是这样工作的:

  1. 启动 main()
  2. main() 产生 16x search()
  3. 一旦在任何 search() 进程中找到“string”,这个特定进程就会开始下载,所有其他进程仍在尝试搜索“string”(不再需要它)

我知道我不是很具体,但我认为你不需要看到我可怕的脚本就能理解我在寻找什么。

【问题讨论】:

    标签: python parallel-processing python-multiprocessing


    【解决方案1】:

    最简单的解决方案是在工作进程(您的 search() 函数)找到合适的 URL 后直接进行下载。

    顺便说一句,对这样的程序要非常小心。您可能会无意中创建拒绝服务攻击。对于您访问的每个站点,您都应该检查并遵守robots.txt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多