1.Python多进程不能将信息放入队列
2.代码:
from urllib import request
from bs4 import BeautifulSoup
from multiprocessing import Manager
from multiprocessing import Pool
import os
def hand_url(url,name,queue):
room_message = {} #存放我需要的信息
print(name,os.getpid())
one_roomlist=[]
req=request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36')
with request.urlopen(req)as f:
data = f.read().decode()
soup = BeautifulSoup(data, 'html.parser')
clear_1 = soup.find_all(class_="table_type_7 responsive_table full_width t_align_l")
clear_1 = clear_1[0].tbody.contents
for i in clear_1:
if i != '\n':
message_small = []
for x in i.strings:
if x != '\n':
message_small.append(x)
one_roomlist.append(message_small)
room_message[name] = one_roomlist
#前半部分为爬去网页信息和筛选内容
print(room_message)
queue.put(room_message) #程序在这里卡住了,room_message为一个字典
print('ok')
if __name__ == '__main__':
queue=Manager().Queue()
pool = Pool(4)
pool.apply_async(hand_url,('http://202.115.129.139:81/trainingroomnote?roomid=91','A405',queue))
pool.close()
pool.join()
print(queue.get())
3.问题截图
4.我自己尝试把print(room_message)得到的内容直接复制添加到队列里面是可以的,但是一旦改成queue.put(room_message)程序是卡在这里的