python多进程的执行顺序

新手上路,请多包涵

在windows系统下,如下代码

from multiprocessing import Pool
import os, time, random

def pr():
    for i in range(10):
        print('r'+str(i))
        time.sleep(random.random() * 3)

def pw():
    for i in range(10):
        print('w' + str(i))
        time.sleep(random.random() * 3)

if __name__=='__main__':
    p = Pool(2)
    p.apply_async(pw())
    p.apply_async(pr())
    p.close()
    p.join()

执行结果如下
w0
w1
w2
w3
w4
w5
w6
w7
w8
w9
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
我的疑问是为什么不是r与w 乱序的,而是顺序的?
本以为r和w打印会交替出现

阅读 3.7k
1 个回答

参数搞错了

    p.apply_async(pw())
    p.apply_async(pr())

改成

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