1创建一个进程:
import time
import multiprocessing
import os
def text1():
while True:
print("111111111111")
print(os.getpid(), os.getppid())
time.sleep(1)
def text2():
while True:
print("222222222222")
print(os.getpid(), os.getppid())
time.sleep(1)
def main():
# text1()
# text2()
print(os.getpid()) #进程的pid
p1 = multiprocessing.Process(target=text1, ) #创建进程
p2 = multiprocessing.Process(target=text2, )
p1.start() #执行进程
p2.start()
if __name__ == "__main__":
main()
2 进程与进程之间是不共享数据的,如果想实现进程之间的数据共享;需要Queue队列来实现:
q = multiprocessing.Queue() 创建队列
q.put() 向队列里面存放数据
q.get() 从队列里面获取数据
q.empty() 队列为空
import multiprocessing
import time
nums = [11,22,33,44]
def text1(q):
nums.append(55)
print(nums)
for temp in nums:
q.put(temp)
while True:
print("11111111")
time.sleep(1)
def text2(q):
new_nums = []
while True:
data = q.get()
new_nums.append(data)
if q.empty():
break
print(new_nums)
while True:
print("222222222")
time.sleep(1)
def main():
q = multiprocessing.Queue() #创建队列
"""
一个进程向Queue中写入数据,另外一个进程从Queue中获取数据,
通过Queue完成了 多个需要配合的进程间的数据共享,从而能够 起到 解耦的作用
"""
p1 = multiprocessing.Process(target=text1,args=(q, )) #传递参数
p2 = multiprocessing.Process(target=text2,args=(q, ))
p1.start()
p2.start()
if __name__ == "__main__":
main()
3进程池:
import multiprocessing
import time, os, random
def text(i):
time_start = time.time()
print("开始时间:%d" % time_start)
print("%d 的进程:%d" %(i,os.getpid()))
time.sleep(random.random()*2)
time_end = time.time()
print("执行耗时:%s" %(time_end - time_start))
def main():
po = multiprocessing.Pool(3) #定义一个进程池,最大进程数为3
for i in range(0,10):
po.apply_async(text,(i,)) #向进程池中添加进程
po.close() #关闭进程池,
po.join()
if __name__ == "__main__":
main()