【发布时间】:2017-06-28 16:14:04
【问题描述】:
我正在尝试遍历 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)
所以,我在多处理方面一定做错了。但我就是想不通它是什么。非常感谢任何帮助!
【问题讨论】:
-
p.map(mp_worker, URLList)使用URLList的每个 元素 作为工作参数,而不是整个URLList将作业提交到池中。此外,这不是一个列表。 -
这是一个文件,它正在尝试被每个元素读取。我现在知道了。我如何编写解决方案?
标签: python iterator multiprocessing