python多进程程序打包成exe的问题

2022-12-26 208阅读 0评论

?=粘贴一下部分的多进程代码

if __name__ == '__main__': """"流程模拟""" multipROCessing.freeze_support() # 打包成exe时,需要该语句,防止系统无限创建子线程 print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主进程] - 程序已启动") if workerS > 0: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主进程] - 当前为并发爬取,每次采集{WORKERS}条URL") else: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主进程] - 当前为单线程爬取,时间间隔为{INTERVAL}秒")  init_data_queue = multiprocessing.Queue()   # 从数据库里取出来的需要爬取的url信息 result_data_queue = multiprocessing.Queue() # 爬取的结果 wait_to_insert_queue = multiprocessing.Queue()  # 等待写入数据的数据 已经去重 符合insert的格式要求  p1 = multiprocessing.Process(tarGet=get_remote_data, args=(init_data_queue, wait_to_insert_queue), name='[数据库交互进程]') p2 = multiprocessing.Process(target=scrapy_wechat, args=(init_data_queue, result_data_queue), name='[爬虫进程]') p3 = multiprocessing.Process(target=make_data, args=(result_data_queue, wait_to_insert_queue), name='[数据处理进程]') try: p1.start() p2.start() p3.start() except ExceptiON as e: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主进程] - 错误信息: {e}") 

程序打exe文件后,启动时会疯狂创建子进程,程序来回在if WORKERS > 0:这行代码中执行,即无法正常工作,还会导致电脑逐渐卡死。解决的办法为:在程序入口前,加入multiprocessing.freeze_support()即可解决此事。值得注意的时,该语必须写在if __name__ == "__main__"的下一句,如果没有main语句,也会出错。

到此这篇关于Python多进程程序打包成exe的问题的文章就介绍到这了,更多相关python打包成exe内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,208人围观)

还没有评论,来说两句吧...