代码层面创建进程
"""
在windows中开设进程类似于导入模块
从上往下再次执行代码
一定需要在__main__判断语句内执行开设进程的代码
在linux中是直接将代码完整的复制一份执行
不需要在__main__判断语句内执行
"""
方法一
from multiprocessing import Process
import time
import os
# 函数创建进程deftest(name):
print(os.getpid()) # 当前进程idprint(os.getppid()) # 父进程idprint('%s is start' % name)
time.sleep(3)
print('%s is end' % name)
if __name__ == '__main__':
p = Process(target=test, args=('sss',)) # 生成一个进程对象
p.start() # 告诉操作系统开设一个新的进程,异步提交print(os.getpid())
print('主')
方法二
# 类创建进程classMyProcess(Process):
def__init__(self, name):
super().__init__()
self.name = name
defrun(self):
print('%s is start' % self.name)
time.sleep(3)
print('%s is end' % self.name)
if __name__ == '__main__':
p = MyProcess('swj')
p.start()
print('主')
进程的join方法
from multiprocessing import Process
import time
def index(name, n):
print('%s is start' % name)
time.sleep(n)
print('%s is end' % name)
if __name__ == '__main__':
p_list = []
time_start = time.time()
# for i in range(1, 4):
# p = Process(target=index, args=(i,))
# p.start()
# p.join() # 主进程等待子进程运行完成再接着往下运行 串行 9s+
# print(time.time() - time_start)
for i in range(1, 4):
p = Process(target=index, args=(i, i))
p.start()
p_list.append(p)
for p in p_list:
p.join() # 3s+ 根据运行时间最长的进程来计算运行时间
print(time.time() - time_start)
print('主')
进程间默认无法交互
from multiprocessing import Process
money = 100defindex():
global money # 局部修改全局
money = 666# 修改的是子进程的moneyprint('子', money)
if __name__ == '__main__':
p = Process(target=index)
p.start()
p.join()
print(money)
print('主')
进程对象方法
from multiprocessing import Process, current_process
import time
print(current_process().pid) # 进程iddefindex(name):
print('%s is start' % name)
time.sleep(3)
print('%s is end' % name)
if __name__ == '__main__':
p = Process(target=index, args=('sss',))
p.start()
p.terminate() # 杀死子进程
time.sleep(0.1)
print(p.is_alive()) # 判断子进程是否存活print(p.name) # 查看进程名称print('主')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步