什么是多进程?
简单的理解:单板上运行的一个程序就是一个进程。进程是操作系统分配资源的最小单位,不同的进程之间资源不共享,进程间通信需要使用特定的方式。python提供了自带的multiprocessing库,用于多线程场景。
线程的创建(函数式和对象式)
import multiprocessing import time def worker(interval): while True: print("The time is {0}".format(time.ctime())) time.sleep(interval) if __name__ == "__main__": p = multiprocessing.Process(target = worker, args = (1,)) p.start() p.join()
import multiprocessing import time class ClockProcess(multiprocessing.Process): def __init__(self, interval): multiprocessing.Process.__init__(self) self.interval = interval def run(self): while True: print("the time is {0}".format(time.ctime())) time.sleep(self.interval) if __name__ == '__main__': p = ClockProcess(1) p.start() p.join()
守护进程
如果将一个进程设置为守护进程,那么当主进程结束时,守护进程也自动结束。
import multiprocessing import time class ClockProcess(multiprocessing.Process): def __init__(self, interval): multiprocessing.Process.__init__(self) self.interval = interval def run(self): while True: print("the time is {0}".format(time.ctime())) time.sleep(self.interval) if __name__ == '__main__': p = ClockProcess(1) p.daemon = True # 设置子进程为守护进程后,看不到子进程的任何打印 p.start() print("main process end")
如果想主进程等待子进程结束后,使用join即可
进程间通信
互斥锁