python multiprocessing 返回结果顺序问题?

from multiprocessing import Pool
import time

def analyse_url(url):
    #do something with this url
    time.sleep(1)
    print url,

if __name__ == '__main__':
    f =  open("test.ip")
    url_list = f.readlines()
    pool = Pool(processes=3)
    result = pool.map(analyse_url, url_list)

在用multiprocessing 进行多进程并发处理时,返回结果不是按读取文件时的顺序返回的,有办法解决没有,能放出代码就最好了,多谢!

阅读 14.2k
3 个回答

进程由操作系统调度,要按照顺序来的话只能使用同步机制,如加锁,这样就和单进程处理是一样的。

另:真的有顺序要求吗?

如果你是要求返回值是顺序的, 你原来的代码 result 就是个按原顺序返回的列表
如果你一定要在多进程里面 print. 那爱莫能助

result就是有顺序的啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题