96SEO 2026-02-23 14:30 20
注意点进程之间不共享全局变量主进程会等待子进程结束之后再结束设置守护主进程

多线程threading模块线程注意点线程之间执行是无序的主线程会等待所有的子线程执行结束在结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题
kwargs以字典形式给执行任务传参Process创建实例对象的常用方法
start()创建子进程join()等待子进程执行结束terminate()不管任务是否完成立即终止子进程
name当前进程的别名默认为Process-NN为从1开始递增的整数
range(5):print(f{msg})time.sleep(1)def
range(5):print(f{msg})time.sleep(1)if
target为任务名创建一个sing线程,通过元组方式传参sing_obj
multiprocessing.Process(targetsing,
target为任务名创建一个dance线程通过字段方式传参dance_obj
multiprocessing.Process(targetdance,
启动两个线程sing_obj.start()dance_obj.start()获取进程编号
获取进程编号的目的是验证主进程与子进程的关系得知子进程是由哪个主进程创建出来的
获取当前进程编号:os.getpid()回去当前父进程编号:os.getppid代码示例
multiprocessing.current_process())#
multiprocessing.Process(targetsing)obj.start()获取进程名
multiprocessing.current_process())if
multiprocessing.Process(targetsing,
nametest_dance)obj.start()进程注意点
进程是分配资源的最小单位每个进程都会有自己的独立空间创建子进程会对主进程资源进行拷贝也就是说子进程是主进程的一个副本之所以进程之间不共享全局变量是因为操作的不是一个进程里面的全局变量只不过不同进程里面的全局变量名字相同而已代码示例
multiprocessing.Process(targetmy_read)write_obj
multiprocessing.Process(targetmy_write)#
保证全局变量数据被写入time.sleep(1)read_obj.start()主进程会等待子进程结束之后再结束
range(5):time.sleep(0.3)print(func())if
multiprocessing.Process(targetfunc)obj.start()print(main)exit(0)设置守护主进程
设置守护主进程的目的是主进程退出子进程销毁不让主进程等待子进程去执行设置守护主进程方式子进程对象.daemontrue销毁子进程方式子进程对象.terminate()注意需要在子进程start之前设置
True:print(f{msg})time.sleep(1)def
True:print(f{msg})time.sleep(1)if
创建一个sing线程,通过元组方式传参sing_thread_obj
创建一个dance线程通过字段方式传参dance_thread_obj
启动两个线程sing_thread_obj.start()dance_thread_obj.start()线程注意点
sleep的时候CPU是空闲的所有创建出来的线程都在等待CPU的执行time.sleep(0.3)#
实际执行线程位置print(threading.current_thread())if
threading.Thread(targetfunc)my_func.start()主线程会等待所有的子线程执行结束在结束
range(5):time.sleep(0.2)print(func)if
threading.Thread(targetfunc)obj.start()time.sleep(0.5)print(main
daemonTrue)方式二线程对象.setDaemon(True)
range(5):time.sleep(0.2)print(func)if
设置守护线程方式二obj.setDaemon(True)obj.start()time.sleep(0.5)print(main
range(5):g_num.append(i)print(my_write:
threading.Thread(targetmy_write)read_obj
threading.Thread(targetmy_read)write_obj.start()#
确保write先执行time.sleep(0.1)read_obj.start()print(main
threading.Thread(targetfunc1)obj2
threading.Thread(targetfunc2)obj1.start()obj2.start()print(g_num)多线程共享全局变量问题
语法子线程.join()功能让主线程等待当前子线程执行完毕在继续向下执行代码示例
threading.Thread(targetfunc1)obj2
threading.Thread(targetfunc2)obj1.start()obj1.join()obj2.start()obj2.join()print(g_num)互斥锁
对共享数据进行锁定保证同一时刻只能有一个线程去操作基本使用语法
threading.Thread(targetfunc1)obj2
threading.Thread(targetfunc2)obj1.start()obj2.start()
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback