进程

>进程

>>进程介绍

进程是程序各种资源管理的集合

>>multipprocessing模块

# Process类
# 创建进程的类
'''
# 常用属性和方法
pid  获取进程的ID
name 获取进程的名称
Process([group [, target [, name [, args [, kwargs]]]]])
'''
# 创建一个执行进程 参数定义如下 :target表示调用对象,args表示调用对象的位置参数元组。
# kwargs表示调用对象的字典。name为别名。group实质上不使用
import multiprocessing
from time import sleep

'''
方法:is_alive()、join([timeout])、run()、start()、terminate()。其中,Process.tart()启动某个进程。
属性:authkey、daemon(要通过start()设置)、exitcode(进程在运行时为None、如果为–N,表示被信号N结束)、
name、pid。其中daemon是父进程终止后自动终止,且自己不能产生新进程,必须在start()之前设置。
'''


# 创建多进程  获取进程id 进程名称
# current_process().pid  current_process().name

def worker_1():
    for i in range(10):
        print('进程id%s,进程名称%s' %
              (multiprocessing.current_process().pid,multiprocessing.current_process().name))
        sleep(1)


def worker_2():
    for i in range(10):
        print('进程id%s,进程名称%s' %
              (multiprocessing.current_process().pid, multiprocessing.current_process().name))
        sleep(1)

def main():
    process_1=multiprocessing.Process(target=worker_1)
    process_2 = multiprocessing.Process(target=worker_2)
    process_1.start()
    process_2.start()


if __name__ == '__main__':
    main()
# 将进程定义为类
import multiprocessing
import time
class MyProcess(multiprocessing.Process):
    def __init__(self, interval):
        multiprocessing.Process.__init__(self)
        self.interval = interval

    def run(self):
        n = 5
        while n > 0:
            print("the time is {0}".format(time.ctime()))
            time.sleep(self.interval)
            n -= 1

if __name__ == '__main__':
    p = MyProcess(3)
    p.start()
# 进程类控制方法
# terminate() 进程中断执行
# join() 进程强制执行
# is_alive()判断进程是否还存活
import multiprocessing
import time
def work(count, t):
    for i in range(count):
        print('this time is %s' % time.ctime())
        time.sleep(t)
def work2(count, t):
    for i in range(count):
        print('this time is %s' % time.ctime())
        time.sleep(t)
def main():
    p1 = multiprocessing.Process(target=work, args=(5, 2))
    p2 = multiprocessing.Process(target=work2, args=(3, 1))
    p1.start()
    if p1.is_alive():
        p1.terminate()
        print('p1被中段')
    else:
        pass
    if not p2.is_alive():
        p2.start()
        p2.join()
        print('p2被强制执行')
if __name__ == '__main__':
    main()
# 守护进程
import multiprocessing
import time
def work(count, t):
    for i in range(count):
        p2 = multiprocessing.Process(target=work2, args=(1,))
        p2.start()
        print('this time is %s' % time.ctime())
        time.sleep(t)
def work2(t):
        print('守护进程的'+'this time is %s' % time.ctime())
        time.sleep(t)
def main():
    p1 = multiprocessing.Process(target=work, args=(5, 2))
    p1.start()
if __name__ == '__main__':
    main()
posted @ 2022-04-12 00:09  饭兜  阅读(99)  评论(0编辑  收藏  举报