在我的程序中,我正在向服务器发出请求。我希望这些请求并行运行以更快地下载数据,因此我使用了多处理。起初程序有效,但后来我想将整个项目变成一个函数。我在多处理中隔离了问题,并意识到该功能在没有它的情况下工作。
我尝试删除多处理,该功能运行良好。当我再次尝试多处理时,函数失败了。我想让多处理在函数内并行运行我的函数,而不是让函数串联运行。
蟒:
# 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()
我成功地使用它来大大加快请求速度。这可能会也可能不会在任何时候拯救您,但值得一试。
查看更多代码也会有所帮助。