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正在執(zhí)行任務---{}".format(count))
count += 1
def work2(q):
while q.qsize() > 0:
global count
# 獲取任務
url = q.get()
requests.get(url)
print("work2正在執(zhí)行任務---{}".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上勾徽。
解決方法找到了滑凉,再補充。