from multiprocessing import Process
'''
def test(i):
print("我是子程序"+str(i))
def main():
print("主程序开始")
p=Process(target=test,args=(1,)) #args是参数元组,kwargs是子典参数
p.start()
print("主程序结束")
if __name__=="__main__":
main()
import time
import os
def child1(i):
print("子类进程(%s)开始,父类进程为(%s)"%(os.getpid(),os.getppid()))
t_start=time.time()
time.sleep(i)
t_end=time.time()
print("子程序(%s)执行时间为'%0.2f'秒"%(os.getpid(),t_end-t_start))
def child2(i):
print("子类进程(%s)开始,父类进程为(%s)" % (os.getpid(), os.getppid()))
t_start = time.time()
time.sleep(i)
t_end = time.time()
print("子程序(%s)执行时间为'%0.2f'秒" % (os.getpid(), t_end - t_start))
if __name__=="__main__":
print("_____parent process start________")
print("parent process PID:%s"%os.getpid())
p1=Process(target=child1,args=(1,))
p2=Process(target=child2,name="mrsoft",args=(2,))
p1.start()
p2.start()
print("p1.is_alive=%s"%p1.is_alive())
print("p2.is_alive=%s"%p2.is_alive())
print("p1.name=%s"%p1.name)
print("p1.pid=%s"%p1.pid)
print("p2.name=%s" % p2.name)
print("p2.pid=%s" % p2.pid)
print("_______waiting son process_______")
p1.join()
p2.join() #没有join将在父类程序运行完后运行子程序
print("_________parent process end________")
import time
import os
class SubProcess(Process):
def __init__(self,i,name=''):
Process.__init__(self) #需要调用Process的__init__,否则无法初始化
self.interval=i
if name:
self.name=name
def run(self):
print("son process (%s)start,parent process is(%s)"%(os.getpid(),os.getppid()))
t_start = time.time()
time.sleep(self.interval)
t_end = time.time()
print("子程序(%s)执行时间为'%0.2f'秒" % (os.getpid(), t_end - t_start))
if __name__=="__main__":
print("_____parent process start________")
print("parent process PID:%s"%os.getpid())
p1=SubProcess(i=1,name="mrsoft")
p2=SubProcess(i=2)
p1.start()
p2.start()
print("p1.is_alive=%s"%p1.is_alive())
print("p2.is_alive=%s"%p2.is_alive())
print("p1.name=%s"%p1.name)
print("p1.pid=%s"%p1.pid)
print("p2.name=%s" % p2.name)
print("p2.pid=%s" % p2.pid)
print("_______waiting son process_______")
p1.join()
p2.join() #没有join将在父类程序运行完后运行子程序
print("_________parent process end________")
from multiprocessing import Pool
import os,time
def task(name):
print("son process(%s) form task%s..."%(os.getpid(),name))
time.sleep(1)
if __name__=="__main__":
print("parent process(%s)."%os.getpid())
p=Pool(3)
for i in range(10):
p.apply_async(task,args=(i,))
print("waiting all son process end")
p.close()
p.join()
print("all son process end")
'''
def plus():
print("------process1 start--------")
global g_num
g_num+=50
print("g_num is %s"%g_num)
print("-------process1 end---------")
def minus():
print("------process2 start--------")
global g_num
g_num-=50
print("g_num is %s"%g_num)
print("------process2 end--------")
g_num=100
if __name__=="__main__":
print("------main process start--------")
print("g_num is %s"%g_num)
p1=Process(target=plus())
p2=Process(target=minus())
p1.start()
p2.start()
p1.join()
p2.join()
print("main process end")