簡體   English   中英

Python 多處理錯誤:AttributeError: Can't get attribute 'task' on<module '__main__' (built-in)> "</module>

[英]Python Multiprocessing error: AttributeError: Can't get attribute 'task' on <module '__main__' (built-in)>"

我正在使用 spyder 5.1.5,我正在嘗試遵循網站上的第一個示例。 我收到錯誤:

AttributeError: Can't get attribute 'task' on <module '__main__' (built-in)>

task是我定義的 function。

完整示例代碼:

import multiprocessing
import time

def task(num):
    print("a",num)
    time.sleep(2)
if __name__ == '__main__':  
    for i in range(10):
       p = multiprocessing.Process(target=task,args=(i,))
       p.start()

根據 Python 的文檔

注意:此 package 中的功能要求__main__模塊可由子模塊導入。 這在編程指南中有介紹,但是,值得在這里指出。 這意味着某些示例,例如multiprocessing.pool.Pool示例將無法在交互式解釋器中工作。

Spyder 使用 IPython 控制台,允許您在IPython解釋器中執行命令並與數據交互。 然而,正如 Spyder 維護者在此提到的: “在 Spyder 的 IPython 控制台中,多處理在 Windows 上無法正常工作。”

選項1

更新您的 Spyder 軟件,因為您使用的是舊版本 - 如您所提到的5.1.5 - 版本。 但是,如此所述, “自我們的5.2.0版本(2021 年 11 月發布)以來,運行多處理代碼時生成的打印被捕獲並顯示在所有操作系統的 IPython 控制台中”

選項 2

更改控制台設置以使用外部終端運行您的代碼。 為此,請 go 到: Run > Configuration per file... > Execute in an external system terminal

選項 3

如此所述,您可以將 function 寫入單獨的文件並將其導入腳本。 例如:

任務.py

import time

def task(num):
    print("a",num)
    time.sleep(2)

主文件

import multiprocessing
from tasks import task

if __name__ == '__main__':  
    for i in range(10):
       p = multiprocessing.Process(target=task,args=(i,))
       p.start()

AttributeError:無法獲取屬性“InsertNews” <module '__main__'< div><div id="text_translate"><p> 我正在嘗試編寫一個程序來抓取網站內容。 該腳本似乎運行了一段時間,但在幾次迭代后停止</p><pre>Traceback (most recent call last): File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\util.py", line 300, in _run_finalizers finalizer() File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\util.py", line 224, in __call__ res = self._callback(*self._args, **self._kwargs) File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\pool.py", line 581, in _terminate_pool cls._help_stuff_finish(inqueue, task_handler, len(pool)) File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\pool.py", line 568, in _help_stuff_finish inqueue._reader.recv() File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\connection.py", line 251, in recv return _ForkingPickler.loads(buf.getbuffer()) AttributeError: Can't get attribute 'InsertNews' on &lt;module '__main__' from 'c:\\program files (x86)\\microsoft visual studio\\2019\\common7\\ide\\extensions\\microsoft\\python\\core\\debugpy\\__main__.py'&gt;</pre><p> 這是我要運行的腳本</p><pre>from boilerpy3 import extractors import pymongo import multiprocessing as mp def InsertNews(newsite, symbol): print(symbol) print(newsite) extractor = extractors.ArticleExtractor() try: content = extractor.get_content_from_url(newsite) except Exception: pass print(content) record={symbol,content} mydb["StocksPressRelease"].insert_one(record) if __name__ == "__main__": print("started") pool = mp.Pool(mp.cpu_count()) myclient = pymongo.MongoClient("mongodb+srv://un:pwd@cluster0.subkd.azure.mongodb.net/db?retryWrites=true&amp;w=majority&amp;connectTimeoutMS=900000") mydb = myclient["db"] mycol = mydb["Stocks"] for x in mycol.find({},{"_id": 0, "symbol":1, "newsite": 1 }): results = pool.apply_async(InsertNews,args=(x["newsite"],x["symbol"])) pool.close()</pre></div></module>

[英]AttributeError: Can't get attribute 'InsertNews' on <module '__main__'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 泡菜錯誤:AttributeError:無法獲取屬性<module '__main__' (built-in)></module> AttributeError:無法獲取屬性“video_dataset”<module '__main__' (built-in)></module> AttributeError:無法獲取屬性“GaitDataset”<module '__main__' (built-in)></module> 多重處理錯誤“ AttributeError:無法獲取屬性&#39;testfuncxx&#39; PyTorch 數據集:並行讀取多個音頻文件錯誤 Can&#39;t get attribute &#39;AudioDataset&#39; on AttributeError:無法獲取屬性“tokenizer”<module '__main__'> AttributeError:無法獲取屬性“DataFrameSelector”<module '__main__'></module> AttributeError:無法獲取屬性“InsertNews” <module '__main__'< div><div id="text_translate"><p> 我正在嘗試編寫一個程序來抓取網站內容。 該腳本似乎運行了一段時間,但在幾次迭代后停止</p><pre>Traceback (most recent call last): File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\util.py", line 300, in _run_finalizers finalizer() File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\util.py", line 224, in __call__ res = self._callback(*self._args, **self._kwargs) File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\pool.py", line 581, in _terminate_pool cls._help_stuff_finish(inqueue, task_handler, len(pool)) File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\pool.py", line 568, in _help_stuff_finish inqueue._reader.recv() File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\multiprocessing\connection.py", line 251, in recv return _ForkingPickler.loads(buf.getbuffer()) AttributeError: Can't get attribute 'InsertNews' on &lt;module '__main__' from 'c:\\program files (x86)\\microsoft visual studio\\2019\\common7\\ide\\extensions\\microsoft\\python\\core\\debugpy\\__main__.py'&gt;</pre><p> 這是我要運行的腳本</p><pre>from boilerpy3 import extractors import pymongo import multiprocessing as mp def InsertNews(newsite, symbol): print(symbol) print(newsite) extractor = extractors.ArticleExtractor() try: content = extractor.get_content_from_url(newsite) except Exception: pass print(content) record={symbol,content} mydb["StocksPressRelease"].insert_one(record) if __name__ == "__main__": print("started") pool = mp.Pool(mp.cpu_count()) myclient = pymongo.MongoClient("mongodb+srv://un:pwd@cluster0.subkd.azure.mongodb.net/db?retryWrites=true&amp;w=majority&amp;connectTimeoutMS=900000") mydb = myclient["db"] mycol = mydb["Stocks"] for x in mycol.find({},{"_id": 0, "symbol":1, "newsite": 1 }): results = pool.apply_async(InsertNews,args=(x["newsite"],x["symbol"])) pool.close()</pre></div></module> Python多處理錯誤:AttributeError:模塊&#39;__main__&#39;沒有屬性&#39;__spec__&#39; AttributeError:無法獲取屬性“NaiveBayesSentiment”<module '__main__' from 'app.py'></module>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM