本文介绍: python基础——进程
multiprocessing模块
与进程相关的模块
使用main进程创建子进程
from multiprocessing import Process
import os
def func():
print("这是一个func函数,进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
if __name__ == '__main__':
print("这是主函数:进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
p = Process(target=func)
p.start()
可以给子进程传递参数,传递的格式是一个元组
from multiprocessing import Process
import time
import os
def func(i):
print("这是一个func函数,进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
print("{}".format(i))
if __name__ == '__main__':
print("这是主函数:进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
p = Process(target=func,args=(123,))
p.start()
不能获取子进程的返回值
可以同时开启多个子进程,同时开启的子进程并发执行
from multiprocessing import Process
import time
import os
def func1(i):
print("这是一个func1函数,进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
print("{}".format(i))
def func2(i):
print("这是一个func2函数,进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
print("{}".format(i))
if __name__ == '__main__':
print("这是主函数:进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
p = Process(target=func1,args=(123,))
p2 = Process(target=func2,args=("456",))
p.start()
p2.start()
join的用法(同步阻塞)
阻塞其他进程,只有当join的进程运行完毕之后才可以执行后续进程
from multiprocessing import Process
import time
import os
def func1(name,age):
print("发送邮件给{}岁的{}".format(name,age))
time.sleep(1)
print("发送完毕!{}".format(name))
if __name__ == '__main__':
print("这是主函数:进程号为:{},父进程号为:{}".format(os.getpid(),os.getppid()))
list_new = [("a",12),("b",11),("c",10),("d",9)]
for arg in list_new:
p = Process(target=func1,args=arg)
p.start()
p.join()
print("所有邮件全部发送完毕!")
多个进程之间数据不共享
from multiprocessing import Process
n = 0
def fuc():
global n
n += 1
if __name__ == '__main__':
list_new = []
for i in range(100):
p = Process(target=fuc)
p.start()
list_new.append(p)
for i in list_new:
i.join()
print(n)
使用面向对象的方法运行进程
import os
from multiprocessing import Process
class Myprocess(Process):
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
super().__init__()
def run(self):
print("子进程:{}父进程:{}".format(os.getpid(),os.getppid()))
print("{}|{}|{}".format(self.a,self.b,self.c))
if __name__ == '__main__':
print("这是主进程")
p = Myprocess(45,56,67)
p.start()
进程的其他属性
p.pid p.ident 查看进程号
p.name 查看进程名
p.daemon 设置进程为守护进程
p.terminate 结束进程
p.is_alive 查看进程是否为活跃状态
import os
import time
from multiprocessing import Process
class Myprocess(Process):
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
super().__init__()
def run(self):
print("子进程:{}父进程:{}".format(os.getpid(),os.getppid()))
print("{}|{}|{}".format(self.a,self.b,self.c))
if __name__ == '__main__':
print("这是主进程")
p = Myprocess(45,56,67)
p.daemon = True
print(p.name)
p.is_alive()
time.sleep(1)
p.start()
print(p.pid,p.ident)
p.terminate()
p.is_alive()
原文地址:https://blog.csdn.net/qq_63781342/article/details/135732316
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_61283.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。