繁体   English   中英

多重处理错误“ AttributeError:无法获取属性'testfuncxx'

[英]multiprocessing error “AttributeError: Can't get attribute 'testfuncxx' on <module '__main__”

#!/usr/bin/env python3.5
import multiprocessing, time

def testfuncxx(num):
    time.sleep(num)
    print(num


pool = multiprocessing.Pool(processes=3)

)

for i in range(10):
    #testfuncxx(i)
    #print(i, '=======')
    pool.apply_async(testfuncxx, args=(i,))

pool.close()
pool.join()

由于只能在Windows上进行测试,因此当我将代码包含在if __name__ == '__main__'入口点保护中时,代码可以工作。 更多细节在这里 通常,在多处理指南中建议包括此保护。

注意 :该代码作为脚本test.py运行。 要在IPython或Jupyter笔记本中运行代码,可以像import test一样import testimport test

test.py

import multiprocessing, time

def testfuncxx(num):
    time.sleep(num)    
    print(num)

def apply_async_callback():  
    pool = multiprocessing.Pool(processes=3) 
    for i in range(10):  
        pool.apply_async(testfuncxx, args=(i,))
    pool.close()
    pool.join()  


if __name__=='__main__':    
    apply_async_callback()

#Output:
0
1
2
3
4
5
6
7
8
9

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.

相关问题 Python 多处理错误:AttributeError: Can't get attribute 'task' on<module '__main__' (built-in)> "</module> 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> 泡菜错误:AttributeError:无法获取属性<module '__main__' (built-in)></module> AttributeError:无法获取属性“NaiveBayesSentiment”<module '__main__' from 'app.py'></module> AttributeError:无法获取属性<module '__main__' from 'manage.py'></module> AttributeError:无法获取属性“video_dataset”<module '__main__' (built-in)></module> AttributeError:无法获取属性“GaitDataset”<module '__main__' (built-in)></module> /predict/ 处的 AttributeError 无法获取属性“人工神经元”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM