– Start
如何构造进程?
构造器
multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
方法1:自定义进程类,重写 run 方法
from multiprocessing import Process
# 自定义进程类
class MyProcess(Process):
# 如果重写 __init__ 方法,必须先调用父类的 __init__ 方法
def __init__(self):
super().__init__()
def run(self):
print('running my task')
# 使用进程
if __name__ == '__main__':
my_task = MyProcess()
my_task.start() # 启动进程
方法2:传入一个 run 函数
from multiprocessing import Process
# 自定义 run 函数
def my_run():
print('running my task')
# 使用进程
if __name__ == '__main__':
my_task = Process(target=my_run)
my_task.start() # 启动进程
一个简单的例子
import multiprocessing, time
from multiprocessing import Process
# 自定义 run 函数
def my_run():
for i in range(100):
print(f'{multiprocessing.current_process().pid} -- {i}')
time.sleep(1)
# 使用进程
if __name__ == '__main__':
p1 = Process(target=my_run)
p2 = Process(target=my_run)
p1.start() # 启动进程
p2.start() # 启动进程
守护进程(daemon)
守护进程用来为其他进程提供服务, 所以在一般情况下, 它会常驻在内存中而不会结束, 当只剩下守护进程时, 守护进程就终止了, 因为其他进程都结束了, 它还提供服务给谁呢? 我们可以通过 Process.daemon 方法来判断一个进程是否是守护进程.
进程相关方法和函数
Process.start()
Process.run()
Process.join()
os.getppid()
os.getpid()
Process.pid
Process.name
Process.daemon
Process.exitcode
Process.authkey
Process.sentinel
Process.is_alive()
Process.terminate()
multiprocessing.current_process()
multiprocessing.active_children()
multiprocessing.cpu_count()
multiprocessing.freeze_support()
multiprocessing.get_all_start_methods()
multiprocessing.get_context()
multiprocessing.set_executable()
multiprocessing.set_start_method()
time.sleep()
– 更多参见:Python 精萃
– 声 明:转载请注明出处
– Last Updated on 2018-10-12
– Written by ShangBo on 2018-10-12
– End