Python除了支持多线程操作,也支持多进程操作,
运行这个代码
from multiprocessing import Process
import time
def run(x):
while 1:
print("i'm %d", x)
q.put(x, True)
time.sleep(5)
if __name__ == '__main__':
procList =[]
for x in range(10):
proc = Process(target=run, args=(x,))
proc.start()
procList.append(proc)
print("comsume proc.....", len(procList))
while len(procList):
proc = procList.pop(0)
print("terminate proc,,,")
proc.terminate()
time.sleep(2)
从任务管理器我们可以看到,里面使用了很多的python进程。这样我们可以利用多核的CPU来同时运行。
image.png
Python创建的进程有独立的变量空间,所以,就算在多进程操作中,python的进程间变量也不会共享,如果想要共享,就必须使用Queue和Pipe。
如下代码:
from multiprocessing import Process, Queue
import time
q = Queue()
def run(x, q):
global r
while 1:
print("i'm %d", x)
q.put(x)
print("shareBlock len is %d" % q.qsize())
time.sleep(5)
if __name__ == '__main__':
procList =[]
for x in range(15):
proc = Process(target=run, args=(x, q))
proc.start()
procList.append(proc)
print("comsume proc.....", len(procList))
while len(procList):
proc = procList.pop(0)
print("terminate proc,,,")
proc.terminate()
time.sleep(2)