'''
about what
同步、异步:
指的是能否开启新的线程。同步不能开启新的线程,异步可以。
串行、并行:
指的是任务的执行方式。串行是指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个。
并行指的是多个任务可以同时执行。异步是多个任务并行的前提条件。
'''
import multiprocessing
import time
def func():
print("%s开始执行..." % (multiprocessing.current_process().name))
time.sleep(3)
print("%s执行结束" % (multiprocessing.current_process().name))
pass
def workWithLock(lock):
print("%s开始执行..." % (multiprocessing.current_process().name))
with lock:
print("%s正在工作..."% (multiprocessing.current_process().name))
time.sleep(3)
print("%s执行结束" % (multiprocessing.current_process().name))
def workWithLock2(lock):
print("%s开始执行..." % (multiprocessing.current_process().name))
if lock.acquire():
print("%s正在工作..."% (multiprocessing.current_process().name))
time.sleep(3)
lock.release()
print("%s执行结束" % (multiprocessing.current_process().name))
def processSync():
p1 = multiprocessing.Process(target=func, name="小分队1")
p2 = multiprocessing.Process(target=func, name="小分队2")
p1.start()
p1.join()
p2.start()
p2.join()
def processAsync():
multiprocessing.Process(target=func, name="小分队1").start()
multiprocessing.Process(target=func, name="小分队2").start()
def processLock():
lock = multiprocessing.Lock()
multiprocessing.Process(target=workWithLock2, name="小分队1", args=(lock,)).start()
multiprocessing.Process(target=workWithLock2, name="小分队2", args=(lock,)).start()
if __name__ == "__main__":
processLock()
print("main over")