我正在为涉及URL的项目使用多处理。我注意到,无论我使用什么迭代器,只要使用pool.imap_unordered()
(让我们说它是一个具有数字1和2的列表,即2个数字),它将使用一个线程运行一次该程序,然后因为有2个数字在列表中,它将再次运行。我似乎无法弄清楚。我以为我知道一切都应该做。 (不,无论我有多少线程,它都不会运行得更快)(args.urls最初是一个文件,然后我将文件中的所有内容转换为列表),一切正常,直到添加了多处理,所以我知道这不是我的非多处理相关代码中的错误。
from multiprocessing import Pool
import multiprocessing
import requests
arrange = [ lines.replace("\n", "") for lines in #file ]
def check():
for lines in arrange:
requests.get(lines)
def main():
pool = ThreadPool(4)
results = pool.imap_unordered(check, arrange)
最佳答案
因此,我不确定您要做什么,但也许这是您需要的:
from multiprocessing import ThreadPool
import multiprocessing
import requests
arrange = [ line.replace("\n", "") for line in #file ]
def check(line):
requests.get(line) # remove the loop, since you are using multiprocessing this is not needed as you pass only one of the lines per thread.
def main():
pool = ThreadPool(4)
results = pool.imap_unordered(check, arrange) # This loops through arrange and provides the check function a single line per call
关于python - 多处理一次运行1个线程x次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58126786/