创建进程:
- Linux:
os模块中的fork()函数 - Windows:
multiprocessing模块中的Process类
Process类的进程启动和结束:
- 创建进程:Process(target= ,args=(,))
target表示进程要执行的代码【示例中是一个函数】
args是一个元组,表示传递的参数【示例中是传给函数的参数】
源码中如下:
self._target(*self._args, **self._kwargs)
‘’‘元组中第一个是参数,第二个是关键词’‘’
-
启动进程使用:Process.start()
-
等待进程结束使用:Process.join()
from multiprocessing import Process
from os import getpid
from time improt time,sleep
from random import randint
# getpid函数可以获得进程号 PID
def psudo_download(filename):
start = time()
print('启动进程,进程号[%d]' % getpid())
print('开始下载%s' % filename)
sleep(randint(5,10))
end = time()
print('%s下载完成,耗时%d秒' % (filename,end-start))
def main():
start = time()
p1 = Process(target=psudo_download,args=('法克鱿.avi',))
p1.start()
p2 = Process(target=psudo_download,args=('草泥马.gif',))
p2.start() # 表示进程开始
p1.join() # 表示等待进程结束
p2.join()
end = time()
print('共耗时%d' % end-start)
结果如下:
进程间通信:
笔者建议读者试一试multiprocessing模块中的Queue类,于是自己使用了一下,能完成显示,但是程序不会自己退出,高了很久也不知道啥原因,搞笑了。。。
from multiprocessing import Process,Queue
from time import sleep
from os import getpid
def sub_task(queue):
print(getpid())
while