在函数中运行多重处理不起作用

时间:2019-06-05 22:03:50

标签: python multiprocessing

在我的程序中,我正在向服务器发出请求。我希望这些请求并行运行以更快地下载数据,所以我使用了多处理。起初该程序起作用了,但是后来我想将整个项目变成一个功能。我在多处理程序中隔离了该问题,并意识到该功能在没有该功能的情况下仍然有效。

我尝试删除多处理,该功能运行良好。当我再次尝试多处理时,该函数失败。我想让多重处理在函数内部并行运行我的函数,而不是让函数串行运行。

Python:

# This doesn't work    
def download():
    data = [name1, name2, name3, name4]
    if __name__ == '__main__':
        pool = multiprocessing.Pool()
        result = pool.map(randomFunction, data)

# This works
def download():
    data=[name1, name2, name3, name4]
    randomFunction(data[0])
    randomFunction(data[0])
    randomFunction(data[0])
    randomFunction(data[0])

1 个答案:

答案 0 :(得分:0)

您可以尝试使用线程。

import threading

def your_function():
    ###whatever your downloader is
t1 = threading.Thread(target=your_function)
t2 = threading.Thread(target=your_function)

t1.start()
t2.start()
t1.join()
t2.join()

我已经成功地使用它大大加快了请求的速度。这可能会或可能不会在任何时候为您节省,但是值得一试。

也将有助于您查看更多代码。