python多进程multiprocessing相关,此段代码在windows上能正常运行。
from multiprocessing import Process,Queue
# 多进程之间的通讯问题 multiprocessing模块中的Queue
import requests
count = 1
def work1(q):
while q.qsize() > 0:
global count
# 获取任务
url = q.get()
requests.get(url)
print("work1正在执行任务---{}".format(count))
count += 1
def work2(q):
while q.qsize() > 0:
global count
# 获取任务
url = q.get()
requests.get(url)
print("work2正在执行任务---{}".format(count))
count += 1
if __name__ == '__main__':
q = Queue()
for i in range(10):
q.put("http://httpbin.org/get")
# 传了同一个对象进去,所以两个进程共享一个对象
p1 = Process(target=work1,args=(q,))
p2 = Process(target=work2,args=(q,))
# 开始
p1.start()
p2.start()
windows下运行结果:
mac下运行结果:
原因:多进程模块multiprocessing下的Queue.qsize()和Queue.empty()方法在Unix平台上无法正常使用,如macOS上。
解决方法找到了,再补充。
网友评论