Python之多进程与多线程
1、对比单进程、多进程、多线程的使用案例。
2、一、先实现单进程的案例:
1、导入threading和time库;
如:
from time import ctime,sleep
import threading
3、定义两个函数:
如:
def talk(content,loop):
for i in range(loop):
print("Start talk %s %r" %(content,ctime()))
sleep(2)
def write(content,loop):
for i in range(loop):
print("Start write %s %r" %(content,ctime()))
sleep(6)
4、运行主函数:
if __name__=='__main__':
talk("Hello world",3)
write("Bye Bye",3)
print("All end 2222:%r" %ctime())
5、全部代码为:
from time import ctime,sleep
import threading
def talk(content,loop):
for i in range(loop):
print("Start talk %s %r" %(content,ctime()))
sleep(2)
def write(content,loop):
for i in range(loop):
print("Start write %s %r" %(content,ctime()))
sleep(6)
if __name__=='__main__':
talk("Hello world",3)
write("Bye Bye",3)
print("All end 2222:%r" %ctime())

6、运行结果如下图所示:

7、二、接下来,编写多进程的案例:
6、函数同单进程中的函数,其中需要定义进程对象;
如:
threads=[]
t1=threading.Thread(target=talk,args=('Hello world',3))
threads.append(t1)
t2=threading.Thread(target=write,args=('Bye Bye',3))
threads.append(t2)
8、运行主函数:
if __name__=='__main__':
for t in threads:
t.start()
for t in threads:
t.join()
print("All end 2222:%r" %ctime())
9、全部代码为:
from time import ctime,sleep
import threading
def talk(content,loop):
for i in range(loop):
print("Start talk %s %r" %(content,ctime()))
sleep(2)
def write(content,loop):
for i in range(loop):
print("Start write %s %r" %(content,ctime()))
sleep(6)
threads=[]
t1=threading.Thread(target=talk,args=('Hello world',3))
threads.append(t1)
t2=threading.Thread(target=write,args=('Bye Bye',3))
threads.append(t2)
if __name__=='__main__':
for t in threads:
t.start()
for t in threads:
t.join()
print("All end 2222:%r" %ctime())
如下图所示:

10、运行代码,结果如下图所示:

11、三、接下来,编写多线程的案例:
10、函数同单进程中的函数,其中需要定义进程对象;
如:
processes=[]
p1 = multiprocessing.Process(target=talk, args=('Hello world',3))
processes.append(p1)
p2=multiprocessing.Process(target=write,args=('Bye',3))
processes.append(p2)
12、定义主函数为:
for p in processes:
p.start()
for p in processes:
p.join()
print("All Processes are Run %s" %ctime())
13、全部代码为:
from time import ctime,sleep
import multiprocessing
import threading
def talk(content,loop):
for i in range(loop):
print("Start talk %s %r" %(content,ctime()))
sleep(2)
def write(content,loop):
for i in range(loop):
print("Start write %s %r" %(content,ctime()))
sleep(6)
processes=[]
p1 = multiprocessing.Process(target=talk, args=('Hello world',3))
processes.append(p1)
p2=multiprocessing.Process(target=write,args=('Bye',3))
processes.append(p2)
if __name__=='__main__':
for p in processes:
p.start()
for p in processes:
p.join()
print("All Processes are Run %s" %ctime())

14、运行结果如下图所示:

15、综上所述,单进程、多进程、多线程的执行结果,主要是体现在执行的时间点的差异。