线程替代方案
subprocess
完全跳过线程使用进程
是派生进程的主要替代方案
multiprocession
使用threading接口派生,使用子进程neg
concurrent.futures
新的异步执行模块,任务级别的操作
多进程
进程间的通讯(IPC)
进程的创建
直接生成process实例对象
案例1
import multiprocessing
from time import sleep,ctime
def clock(interval):
while True:
print('the time is %s'%ctime())
sleep(interval)
if __name__=='__main__':
p=multiprocessing.Process(target=clock,args=(5,))
p.start()
派生子类
案例2
import multiprocessing
from time import sleep,ctime
class ClockProcess(multiprocessing.Process):
def __init__(self,interval):
super().__init__()
self.interval=interval
def run (self):
while True:
print('the time is %s'%ctime())
sleep(self.interval)
if __name__=="__main__":
p=ClockProcess(3)
p.start()
在os中查看pid,ppid
案例3
from multiprocessing import Process
import os
def info(title):
print(title)
print('module name:',__name__)
#得到父进程的id
print('parent process:',os.getppid())
#得到本身进程id
print('process id :',os.getpid())
def f(name):
info('function f')
print('hello',name)
if __name__=='__main__':
info("main_line")
p=Process(target=f,args=('bob',))
p.start()
p.join()
运行结果如下:
main_line
module name: main
parent process: 7248
process id : 8740
function f
module name: mp_main
parent process: 8740
process id : 7420
hello bob
生产者消费者模型
JoinableQueue