Python - 迭代器逐个字符,而不是逐行(多处理时)

时间:2017-06-28 16:14:04

标签: python iterator multiprocessing

我试图遍历一个URL列表,但我得到的输出是逐字符的,而不是逐行的。在没有多处理的情况下运行时,它完美无缺。但是,当我尝试多处理时,它开始逐个字符地阅读。这是为什么?

我已经广泛阅读了如何逐行阅读的内容,并且在我正确地做到这一点时,我看起来就是这样。我哪里错了?它完美无需多处理。

import urllib.request
import urllib.error
import multiprocessing

def findAdmin(URLList):
    # Loops through links
    for link in URLList:
        print (link)

# Multi-processing worker
def mp_worker(URLList):
    findAdmin(URLList)

# Multi-processing handler
def mp_handler(URLList):
    p = multiprocessing.Pool(2)
    p.map(mp_worker, URLList)


if __name__ == '__main__':
    URLList = open('sites.txt','r')
    mp_handler(URLList)
    ## When running just findAdmin(URLList), the program works flawlessly.
    # findAdmin(URLList)

所以,我必须在多处理方面做错事。但我无法弄清楚它是什么。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

.map()在URLList中的每个条目上运行mp_worker - for循环是不必要的。将findAdmin更改为:

def findAdmin(URLList):
    print (link)