当前位置 : 主页 > 手机开发 > ROM >

进程相关

来源:互联网 收集:自由互联 发布时间:2021-06-10
1.开启子进程的两种方式 from multiprocessing import Process import time def task(name): print ( ‘ %s is running ‘ % name) time.sleep( 3 ) print ( ‘ %s is done ‘ % name) # 在windows系统上,开启子进程的操作必须放

1.开启子进程的两种方式

分享图片
from multiprocessing import Process
import time

def task(name):
    print(%s is running %name)
    time.sleep(3)
    print(%s is done %name)


#在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘:的子代码中
if __name__ == __main__:
    p=Process(target=task,args=(lqz,))
    p.start()
    print()
View Code 分享图片
from multiprocessing import Process
import time
class MyProcess(Process):
    def __init__(self,name):
        super().__init__()
        self.name=name
    def run(self):
        print(%s is running %self.name)
        time.sleep(3)
        print(%s is done%self.name)

# 在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘的子代码中
if __name__ == __main__:
    p=MyProcess(egon)
    p.start()
    print()
View Code

在这里要说明一下,开启进程需要消耗一定的cpu资源,需要一定时间,开启线程也需要一定的cpu资源。但是开启进程比线程的消耗要大很多

python无法利用到多核优势,如果想要充分的利用多核CPU资源,在python中大部分情况下需要使用多进程

强调:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。

进程之间内存空间是隔离的

2.join方法

join:让主进程原地等待,等待子进程运行完毕,不会影响子进程的执行

分享图片
from multiprocessing import Process
import time


def task(name, n):
    print(%s is running % name)
    time.sleep(n)
    print(%s is done % name)


if __name__ == __main__:
   start=time.time()
   p_l=[]
   for i in range(1,4):
       p=Process(target=task,args=(lqz%s%i,i))
       p_l.append(p)
       p.start()
   for p in p_l:
       p.join()
   print()
   print(time.time()-start)
View Code

3.进程对象其他相关属性或方法

其实主要是获取进程号

分享图片
from multiprocessing import Process,current_process
import time
def task():
    print(%s is running %current_process().pid)
    time.sleep(2)
    print(%s is done %current_process().pid)

if __name__ == __main__:
    p=Process(target=task)
    p.start()
    print(,current_process().pid)
View Code 分享图片
from multiprocessing import Process
import time,os

def task():
    print(%s is running,爹是:%s%(os.getpid(),os.getppid()))
    time.sleep(3)
    print(%s is running,爹是:%s%(os.getpid(),os.getppid()))

if __name__ == __main__:
    p=Process(target=task)
    p.start()
    print(主:%s 主他爹:%s%(os.getpid(),os.getppid()))
View Code

4.守护进程

守护进程:本质就是一个“子进程”,该子进程的生命周期<=被守护进程的生命周期

上一篇:dict函数
下一篇:排序问题评价指标
网友评论