python多进程之Process

  1. 因为fork建立进程不能在windows系统上使用,因此产生了multiprocessing.Process
  2. Process能够直接实例化而后用start调用,须要指定新的进程执行的函数,用元组的方式传递参数
  3. 进程对象的join方法会让主进程阻塞,直到子进程执行结束才往下执行,timeout参数能够指定超时时间
  4. Process实现的进程,主进程会等全部子进程执行完毕以后才关闭
  5. 相似Java多线程实现方式,继承Process类,重写run方法,而后实例化,再调用start方法
from multiprocessing import Process
import os
import time


def test(arg):
    print(arg)
    time.sleep(4)
    print("the process %s is executing "%os.getpid())


p1 = Process(target=test, args=("haha",))  # 以元组的形式传递参数
p1.start()

p1.join(timeout=2)  # 子进程执行结束以后主进程才继续往下执行
# timeout设置超时时间 超过这个时间若是子进程还没结束 主进程将继续执行

# p1.terminate()  # 杀死p1进程

print("finish")  # 主进程执行完以后并不会关闭 而是会等子进程执行结束再关闭


# 相似Java多线程  继承Process类  重写run方法 实例化 start调用
class MyProcess(Process):

    def run(self):
        time.sleep(3)
        print("haha...")


m1 = MyProcess()
m1.start()
print("主进程执行到这里了....")
相关文章
相关标签/搜索