并发编程[第二篇]进程

Posted on 2019-07-27 21:17  久腻-念  阅读(104)  评论(0)    收藏  举报

一.进程的两种调用方式

 进程的调用方式类似线程

--直接调用自定义的目标函数

from multiprocessing import Process
import time
def myThreading():
    time.sleep(2)
    print('子线程正在运行',time.ctime())

def myThreading1():
    time.sleep(4)
    print('子线程1正在运行',time.ctime())


if __name__ == '__main__':
    q = Process(target=myThreading)
    q1 = Process(target=myThreading1)

    # q.daemon
    # q1.daemon

    q.start()
    q1.start()

    # q.join()
    # q1.join()

    print('主线程正在运行',time.ctime())

 

--继承父类并改写其run函数

from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self):
        super(MyProcess, self).__init__()
        #self.name = name

    def run(self):
        time.sleep(1)
        print ('hello', self.name,time.ctime())


if __name__ == '__main__':
    p_list=[]
    for i in range(3):
        p = MyProcess()
        p.start()
        p_list.append(p)

    for p in p_list:
        p.join()

    print('end')

 

多个进程之间使用的资源不同,内存地址自然不同

# from multiprocessing import Process
# n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了
# def work():
#     global n
#     n=0
#     print('子进程内: ',n)
#
# #进程直接的内存空间是隔离的
# if __name__ == '__main__':
#     p=Process(target=work)
#     p.start()
#     print('主进程内: ',n)

 

 

未完待续。。。。。线程队列,进程池

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3