当前位置 : 主页 > 手机开发 > 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函数
下一篇:排序问题评价指标
网友评论