Python动态多处理

时间:2015-12-30 00:33:08

标签: python parallel-processing python-multiprocessing

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

我想做的是:

  1. 使用1-x参数(关键字)运行main()
  2. main()应该运行最多。 32 / x并行函数search()在每个关键字的分隔池中
  3. search()正在寻找"关键字"网页上的字符串,一旦有"关键字"在任何进程中找到(在池中),search()应该返回url,传递给download()函数
  4. download()函数应该替换父池中的search()函数(在max parallel processes的术语中),其他池仍然应该搜索关键字
  5. 重复所有其他游泳池
  6. 示例:

    1. main(" stack"," overflow")
    2. 应该有2个搜索池,一个用于" stack"第二个用于" overflow"每个应该有16个search()进程
    3. keyword" stack"发现,search()函数应该由16个download()函数代替;关键字"溢出"未找到,继续在分离的池中,分离的进程
    4. 我当前的脚本是这样的:

      1. 启动main()
      2. main()产生16x search()
      3. 一次" string"在任何search()进程中都可以找到,这个特定的进程开始下载,其他所有进程都在尝试搜索" string" (不再需要它了)
      4. 我知道我不是很具体,但我认为你不需要看到我可怕的剧本来理解我在寻找什么。

1 个答案:

答案 0 :(得分:1)

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

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