我正在为涉及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/

10-12 22:07