- 一、进程
- 1.什么是进程?
- 2.创建进程
- 3.进程传参
- 4.start()使用进程
- 5.os.kill()杀死进程
- 6.获取进程id
- 7.休眠进程
- 8.进程使用以及传参例子
- 9.进程不共享全局变量
- 10.join()阻塞等待
- 11.主进程会等待子进程结束后才会结束
- 12.让子进程随主进程结束而结束
一、进程 1.什么是进程?
- 运行的软件或者程序
- 一个程序至少有一个进程,一个进程至少有一个线程
- 进程之间的执行是无序的,他是由操作系统调度决定的,操作系统调度哪个进程,哪个进程就先执行,没有调度的进程不能执行
import multiprocessing process = multiprocessing.Process(target=,args=/kwargs=)3.进程传参
target:进程名字
args:元组
kwargs:字典
process.start()
5.os.kill()杀死进程import os
os.kill(进程id,9)# 9为固定值
- os.getpid()获取子进程id
- os.getppid()获取父进程id
- multiprocessing.current_process().pid获取当前进程id
time.sleep(秒数)
8.进程使用以及传参例子# 进程使用以及传参
def sing(singer, song):
print('sing:',os.getppid(), multiprocessing.current_process().name)
print(f'{singer}唱{song}')
for i in range(5):
print('singing')
time.sleep(0.1)
def dance(dancer, name):
print('dance:', multiprocessing.current_process().name,os.getppid())
print(f'{dancer}跳{name}')
for i in range(5):
print('dancing')
time.sleep(0.1)
# os.kill(进程id,9)杀死指定进程
os.kill(os.getpid(), 9)
if __name__ == '__main__':
print('main:',multiprocessing.current_process().name)
process_sing = multiprocessing.Process(target = sing, args=('德华','我的老家'))
process_dance = multiprocessing.Process(target = dance,kwargs={'dancer':'彭丽','name': '进屋们'})
process_dance.start()
process_sing.start()
# os.kill(multiprocessing.current_process().pid,9)
9.进程不共享全局变量
10.join()阻塞等待
代码书写在哪个进程中哪个进程阻塞等待
哪个进程对象.join(),就是等待哪个进程执行
import multiprocessing
data_list = []
def add_data():
for i in range(5):
data_list.append(i)
time.sleep(0.1)
print('add_data',data_list)
def read():
print('read:',data_list)
if __name__ == '__main__':
process_add = multiprocessing.Process(target=add_data)
process_read = multiprocessing.Process(target=read)
process_add.start()
process_add.join()#阻塞主进程,等add进程执行结束(会间接影响read进程)
process_read.start()
11.主进程会等待子进程结束后才会结束
def func():
for i in range(5):
print(i)
time.sleep(0.5)
print("子进程代码结束")
if __name__ == '__main__':
process_func = multiprocessing.Process(target=func)
process_func.start()
time.sleep(1)
print("主进程代码结束")
12.让子进程随主进程结束而结束
- 1.process.terminate()
- 2.将子进程设置为daemon进程(要在start()之前使用)
process_func.daemon = True



