参照我的上一篇多线程的顺序执行https://blog.csdn.net/weixin_41950973/article/details/106213436
今天,同一个问题用进程来解决。
注意点1:进程之间是完全独立的,所以在用condition对象时,需要将condition对象作为参数传递到进程类中,其他都和我上一篇的多线程的解决方法一致。(开始没有注意到这一点,完全照搬多线程的做法,总是得不到想要的结果,郁闷了半天。。。)
注意点2:因为进程之间的global全局变量是各自独立的,所以作为判断条件里的nowprocessid对象,使用进程间的共享对象来解决。 nowprocessid = multiprocessing.Value('i', 1)
问:生成5个进程按照顺序来输出1234512345... 。其中1为进程1输出,2为进程2输出以此类推。
思路:使用Condition
解答:
import multiprocessing
import time
cond = multiprocessing.Condition()
def domywork(processid):
print(processid, end='')
class myprocess(multiprocessing.Process):
def __init__(self, nowprocessid, processid, jobcnt, processcnt, cond):
multiprocessing.Proc