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



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

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

蟒:

# 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])

您可以尝试使用线程。

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()

我成功地使用它来大大加快请求速度。这可能会也可能不会在任何时候拯救您,但值得一试。

查看更多代码也会有所帮助。

相关内容

  • 没有找到相关文章

最新更新