为什么Python多处理调用未指定的代码?

为什么Python多处理调用未指定的代码?,python,multiprocessing,Python,Multiprocessing,我正在尝试对我的webscraping项目实施多处理,以便一次10页而不是一页一页地抓取200页的列表 我的问题是,在实现代码时,应该调用列表中的函数的内容会导致一个大故障,它会在调用的函数之外调用输入语句 下面是显示问题的整个示例脚本: #print statements to request necessary details to perform scrape cleanURL = input("What is the URL? ") pn = input("What is the pro

我正在尝试对我的webscraping项目实施多处理,以便一次10页而不是一页一页地抓取200页的列表

我的问题是,在实现代码时,应该调用列表中的函数的内容会导致一个大故障,它会在调用的函数之外调用输入语句

下面是显示问题的整个示例脚本:

#print statements to request necessary details to perform scrape
cleanURL = input("What is the URL? ")
pn = input("What is the product name? ")
condition = input("Is the product used or new? ").lower()
pages_available = input('How many pages of data do you want? ')

def scrape_page(URL):
    #variables for storing/cleaning data for mysql queries
    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0'}
    page = requests.get(URL, headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')


#creates a list of 200 urls
url_list = []
for pages_unscraped in range(int(pages_available)+1):
    URL = cleanURL + str(pages_unscraped)
    if (pages_unscraped > 0):
        url_list.append(URL)

#supposed to call the scrape_page function on the entire url_list
if __name__=='__main__':
    p = Pool(10)
    p.map(scrape_page, url_list)
    p.terminate()
    p.join()
出现的问题是,它调用输入语句10次,而不是一次只调用列表中10个URL上的“scrape_page”函数


如何阻止编程导致此问题?

您需要将所有的“单次执行”代码像输入语句一样放在if\uuu name\uuuu==''uuuu main\uuuu':保护范围内,或者放在将从该保护中调用的单独函数中,以确保只执行一次


Python在运行多处理时所做的最终是运行一个新的解释器是的,有一些平台差异可以让您在可分叉的系统上摆脱它,但为了简单起见。。。使用包含要调用的函数的Python脚本,然后调用该函数。在Python有机会调用预期函数之前,该脚本全局范围内的任何内容都将被执行。

您需要将所有“单次执行”代码像输入语句一样放在if\uu name\uuuuuu==''uuuu main\uuuuu':保护范围内,或者在一个单独的函数中,该函数将从该保护中调用,只保证一次执行


Python在运行多处理时所做的最终是运行一个新的解释器是的,有一些平台差异可以让您在可分叉的系统上摆脱它,但为了简单起见。。。使用包含要调用的函数的Python脚本,然后调用该函数。该脚本的全局范围内的任何内容都将在Python有机会调用预期函数之前执行。

scrape_page函数在哪里?实际程序中有100多行,但编辑版本提供了一个复制错误的示例函数scrape_page函数在哪里?实际程序中有100多行,但编辑版本提供了一个复制错误的示例函数