当前位置: 首页 > news >正文

西安建设城市信息网站wordpress列表缩略图

西安建设城市信息网站,wordpress列表缩略图,中国十大上市装修公司,lnmp wordpress 404目录 一、python多线程 1.1 多线程的作用 1.2 python中的 threading 模块 1.3 线程锁 二、python网络编程 2.1 通过socket访问网络 2.2 python2.x中的编码问题 2.3 python3的编码问题 一、python多线程 1.1 多线程的作用 多线程技术在计算机编程中扮演着重要的角色它主要有以下几个作用 1. **提高程序的响应性**在单线程程序中如果某个操作需要较长时间比如读取大文件或进行复杂计算整个程序会在这段时间内无法响应用户的其他操作。而多线程允许程序在执行耗时操作的同时其他线程可以继续响应用户输入从而提高程序的响应速度和用户体验。 2. **提高资源利用率**现代计算机通常有多个处理器或核心。多线程允许程序同时运行在多个处理器上从而更充分地利用系统资源提高处理速度和效率。 3. **简化程序结构**通过将复杂的任务分解为多个并行的线程可以使程序的逻辑更加清晰和模块化。每个线程负责一部分任务便于管理和维护。 4. **实现并发操作**在某些应用场景中需要同时进行多个独立的任务如服务器处理多个客户端请求、图形界面同时响应用户输入和后台数据处理等。多线程使得这些并发操作成为可能。 5. **提高执行效率**对于可以并行执行的任务多线程可以显著减少总的执行时间。例如在数据处理、图像渲染、科学计算等领域多线程可以大幅提升处理速度。 然而多线程编程也带来了一些挑战如线程同步问题、死锁风险、资源竞争等需要开发者仔细设计和实现以确保程序的正确性和稳定性。 1.2 python中的 threading 模块 Python中用于多线程编程的内置模块是 threading。下面我将详细解释如何使用 threading 模块来启动多线程。 ### 使用 threading 模块启动多线程 1. **导入 threading 模块** import threading 2. **定义线程函数**    这个函数将作为新线程的入口点。 def my_thread_function(arg1, arg2):# 线程执行的代码print(fThread is running with arguments: {arg1}, {arg2}) 3. **创建 Thread 对象**    在创建 Thread 对象时可以传入线程函数和参数。 thread threading.Thread(targetmy_thread_function, args(hello, world)) 4. **启动线程**    调用 start() 方法启动线程。 thread.start() 5. **等待线程完成可选**    如果需要等待线程执行完毕可以调用 join() 方法。 thread.join() ### 完整示例 以下是一个完整的示例展示了如何使用 threading 模块创建和启动多个线程 import threadingdef my_thread_function(arg1, arg2):print(fThread {threading.current_thread().name} is running with arguments: {arg1}, {arg2})# 创建多个线程 threads [] for i in range(5):thread threading.Thread(targetmy_thread_function, args(fhello_{i}, fworld_{i}))threads.append(thread)thread.start()# 等待所有线程完成 for thread in threads:thread.join()print(All threads have finished.) 在这个示例中我们创建了5个线程每个线程执行 my_thread_function 函数并传递不同的参数。最后我们使用 join() 方法确保主线程等待所有子线程完成后再继续执行。 通过这种方式您可以利用 threading 模块在Python中实现多线程编程从而提高程序的并发性和响应性。 1.3 线程锁 在多线程编程中所有线程共享代码和数据资源。这种共享性带来了一个主要风险多个线程可能同时访问和修改同一个变量导致不可预期的结果。为了解决这一问题大多数编程语言提供了锁机制来确保线程安全。 ### 问题代码示例 import threadingg_Num 0def threadProc():global g_Numfor i in range(1000000):g_Num g_Num 1 # 修改数据thread1 threading.Thread(namehello1, targetthreadProc) thread2 threading.Thread(namehello2, targetthreadProc) thread1.start() thread2.start() thread1.join() thread2.join()print(g_Num) 在这个示例中两个线程同时对 g_Num 进行递增操作导致最终打印出来的数字不可预期。 ### 使用锁机制解决问题 为了确保线程安全可以使用锁来保护对 g_Num 的访问。以下是修正后的代码   import threadinglock threading.Lock() g_Num 0def threadProc():global g_Numfor i in range(1000000):lock.acquire() # 获取锁g_Num g_Num 1 # 修改数据lock.release() # 释放锁thread1 threading.Thread(namehello1, targetthreadProc) thread2 threading.Thread(namehello2, targetthreadProc) thread1.start() thread2.start() thread1.join() thread2.join()print(g_Num) 通过使用锁我们确保在任何时刻只有一个线程能够进入锁定范围并修改 g_Num从而避免了竞态条件确保最终结果的可预期性。 二、python网络编程 2.1 通过socket访问网络 Python 提供了两种不同层次的网络服务接口 1. **低级网络服务**这一层支持基本的 Socket 功能它实现了标准的 BSD Sockets API允许开发者访问底层操作系统 Socket 接口的所有方法从而进行更底层的网络操作。 2. **高级网络服务**这一层包含模块 SocketServer它提供了一系列服务器中心类旨在简化网络服务器的开发过程使得开发者能够更快速地构建网络应用。 **什么是 Socket** Socket又称为“套接字”是应用程序用于网络通信的一种抽象。通过 Socket应用程序可以发送请求或响应网络请求实现不同主机间或同一台计算机上不同进程间的通信。Socket 是网络编程的基础它封装了复杂的网络通信细节使得开发者能够更容易地编写网络应用程序。 socket()函数 Python 中我们用 socket函数来创建套接字语法格式如下 socket.socket([family[, type[, proto]]]) 参数 family: 套接字家族可以使 AF_UNIX 或者 AF_INET。type: 套接字类型可以根据是面向连接的还是非连接分为 SOCK_STREAM 或 SOCK_DGRAM。protocol: 一般不填默认为 0。 Socket 对象(内建)方法 简单示例如下 服务端代码 # 导入 socket 模块 import socketdef main():print(~~~~~服务端启动~~~~~)# 1. 创建 socketsSock socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 绑定sSock.bind((192.168.1.125, 1234)) # IP地址 可用本地IP测试: 127.0.0.1# 3. 监听sSock.listen(5)# 4. 处理连接cSock, addr sSock.accept()print(客户端连接成功)cSock.send(str(欢迎:).encode(utf-8))# 5、6 发送、接收数据while True:print(cSock.recv(1024).decode(utf-8))inStr input(: )if inStr quit:breakcSock.send(str(inStr).encode(utf-8))# 7. 关闭套接字cSock.close()sSock.close()if __name__ __main__:main() 客户端代码 # 导入 socket 模块 import socketdef main():print(~~~~~客户端启动~~~~~)# 1. 创建 socketcSock socket.socket()# 2. 连接服务器host 192.168.1.125 # IP地址 可用本地IP测试: 127.0.0.1port 1234 # 设置端口号cSock.connect((host, port))# 3、4 发送、接收数据while True:print(cSock.recv(1024).decode(utf-8))inStr input(: )if inStr quit:breakcSock.send(str(inStr).encode(utf-8))# 5. 关闭套接字cSock.close()if __name__ __main__:main() 2.2 python2.x中的编码问题 在Python 2.x版本中存在两个主要的字符串类unicode 和 str它们都继承自 basestring。 str 类是带编码的默认情况下使用 ASCII 编码。因此如果你的程序中包含中文字符串默认情况下会报错。可以通过设置Python 2中的字符默认编码来解决这个问题。 # coding:utf-8 # 默认使用UTF-8编码# coding:gbk # 默认使用GBK编码 unicode 类是不带编码的用于表示已知文明中的任何一个字符。需要注意的是unicode 并不是一种编码方式。  示例 ul u中国 # 字符串 unicode类型print ul # 输出: u\u4e2d\u56fdprint len(ul) # 输出: 2u2 uhelloprint u2 # 输出: uhelloprint len(u2) # 输出: 5sl 中国 # str 类型字节串print sl # 输出: \xd6\xd0\xb9\xfa中文 GBK 编码控制台不指定中文默认 GBKprint len(sl) # 输出: 4s2 helloprint s2 # 输出: helloprint len(s2) # 输出: 5 在Python 2中可以在字符串和字节串之间进行转换 - encode将字符串按指定方式进行编码转换成字节流str存放在内存中。 - decode将字节流按指定方式进行解码转换成字符串unicode用于显示。 可以使用 chardet 模块来判断字节流的编码 import chardet raw u12AB好 print chardet.detect(raw.encode(utf-8)) # 输出: {encoding: utf-8, confidence: 0.99} print chardet.detect(raw.encode(gbk)) # 输出: {encoding: GB2312, confidence: 0.99} 在C中多字节集通常是GBK编码而宽字节集是UTF-16编码。字符使用哪种方式进行编码就应该使用哪种方式进行解码。以下是几种常见情况1. C端发送过来的是GBK编码我们需要显示那么应该使用 decode(GBK) 转换成 unicode 便于显示。2. C端发送过来的是UTF-16编码我们需要显示那么应该使用 decode(UTF-16) 转换成 unicode 便于显示。3. C端发送过来的数据需要Python端转发到其他C端不需要转换。4. Python端要直接给C端发送字符串那么应该根据C端使用多字节集还是宽字节集使用 encode(GBK) 或者 encode(UTF-16) 之后再发送给C端。5. 如果你直接使用字节串那么应该先使用 decode(UTF-8) 转换成 unicode再使用 encode(GBK) 或者 encode(UTF-16) 再发送给C端。 示例代码 c端代码 #include iostream #include winsock2.h #include ws2tcpip.h#pragma comment(lib, ws2_32.lib)// 数据包 1024 4 4 1032 struct NETMSGINFO {int MSGTYPE; // 消息类型int nMsgLen; // 消息大小char szMsgBuff[1024]; // 消息内容 };int main() {// 1. 初始化环境WSADATA wsd {};if (WSAStartup(MAKEWORD(2, 2), wsd) ! 0) {std::cerr WSAStartup failed! std::endl;return 1;}// 2. 创建套接字SOCKET sock socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sock INVALID_SOCKET) {std::cerr socket creation failed! std::endl;WSACleanup();return 1;}// 3. 连接sockaddr_in addr {};addr.sin_family AF_INET;addr.sin_port htons(0x1234);addr.sin_addr.s_addr inet_addr(127.0.0.1);if (connect(sock, (sockaddr*)addr, sizeof(addr)) SOCKET_ERROR) {std::cerr connect failed! std::endl;closesocket(sock);WSACleanup();return 1;}// 4. 发送数据NETMSGINFO netbuf {};netbuf.MSGTYPE 1; // 可以用宏代替上线strcpy_s(netbuf.szMsgBuff, 1024, xxx:上线了);netbuf.nMsgLen strlen(netbuf.szMsgBuff); // 字符长度注意Python中字符不以0结尾if (send(sock, (char*)netbuf, sizeof(netbuf), 0) SOCKET_ERROR) {std::cerr send failed! std::endl;closesocket(sock);WSACleanup();return 1;}// 5. 接收数据if (recv(sock, (char*)netbuf, sizeof(netbuf), 0) SOCKET_ERROR) {std::cerr recv failed! std::endl;closesocket(sock);WSACleanup();return 1;}std::cout netbuf.szMsgBuff std::endl;// 6. 清理环境closesocket(sock);WSACleanup();return 0; } python端代码 import socket import structdef main():# 创建TCP套接字sock socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定端口sock.bind((127.0.0.1, 0x1234))# 监听sock.listen(socket.SOMAXCONN)# 等待连接clientsock, addr sock.accept()print(fConnection from {addr})# 获取消息大小是发送数据结构大小Msg clientsock.recv(1032)# 进行格式拆包由于字符长度不确定暂时不解包消息msgtype, nMsgLen struct.unpack(ii, Msg[0:8])# 第二次根据长度解包指定解包字符长度使用切片方式msgbuff, struct.unpack(f{nMsgLen}s, Msg[8:8nMsgLen])# 字符需要进行解码因为VS中默认是以GBK编码方式print(msgbuff.decode(gbk))# 回复客户端消息构建一个数据包# 这个数据需要进行GBK编码否则VS中解析不了字符sendbug 你好\n.encode(gbk)# 打包数据msg struct.pack(ii1024s, 0, len(sendbug), sendbug)# 发送数据clientsock.send(msg)# 关闭套接字clientsock.close()sock.close()if __name__ __main__:main() 2.3 python3的编码问题 在Python 3中默认使用UTF-8编码并且明确区分了文本字符和二进制数据分别用str和bytes类型表示。 s1 abc # str类型字符串 s2 babc # bytes类型二进制字节流 s1 中国 # str类型字符串 s2 b中国 # bytes类型不支持非ASCII字符这样会报错 在Python 2中str类型在Python 3中对应bytes类型表现为字节转换是通过encode方法用于存储。 在Python 2中Unicode类型在Python 3中对应str类型表现为字符转换是通过decode方法用于显示。 encode和decode方法用于在str和bytes之间进行转换。 示例 s 18CM好棒 print(s.encode()) # 默认使用UTF-8编码 # 输出: b18CM\xe5\xa5\xbd\xe6\xa3\x92 print(s.encode(gbk)) # 使用GBK编码 # 输出: b18CM\xba\xc3\xb0\xb2print(b18CM\xe5\xa5\xbd\xe6\xa3\x92.decode()) # 默认使用UTF-8解码 # 输出: 18CM好棒 print(b18CM\xba\xc3\xb0\xb2.decode(gbk)) # 使用GBK解码 # 输出: 18CM好棒 需要注意的是encode和decode方法的默认参数都是UTF-8。
文章转载自:
http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn
http://www.morning.tgqzp.cn.gov.cn.tgqzp.cn
http://www.morning.dglszn.com.gov.cn.dglszn.com
http://www.morning.kpgms.cn.gov.cn.kpgms.cn
http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn
http://www.morning.rqlqd.cn.gov.cn.rqlqd.cn
http://www.morning.lpcct.cn.gov.cn.lpcct.cn
http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn
http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.gagapp.cn.gov.cn.gagapp.cn
http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn
http://www.morning.pcrzf.cn.gov.cn.pcrzf.cn
http://www.morning.rgksz.cn.gov.cn.rgksz.cn
http://www.morning.qclmz.cn.gov.cn.qclmz.cn
http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn
http://www.morning.nbwyk.cn.gov.cn.nbwyk.cn
http://www.morning.wsyst.cn.gov.cn.wsyst.cn
http://www.morning.tnthd.cn.gov.cn.tnthd.cn
http://www.morning.rydhq.cn.gov.cn.rydhq.cn
http://www.morning.srckl.cn.gov.cn.srckl.cn
http://www.morning.tygn.cn.gov.cn.tygn.cn
http://www.morning.xjqrn.cn.gov.cn.xjqrn.cn
http://www.morning.bpmtg.cn.gov.cn.bpmtg.cn
http://www.morning.hytr.cn.gov.cn.hytr.cn
http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn
http://www.morning.rfxg.cn.gov.cn.rfxg.cn
http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn
http://www.morning.mntxalcb.com.gov.cn.mntxalcb.com
http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn
http://www.morning.frtt.cn.gov.cn.frtt.cn
http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn
http://www.morning.wphzr.cn.gov.cn.wphzr.cn
http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn
http://www.morning.hnk25076he.cn.gov.cn.hnk25076he.cn
http://www.morning.nktxr.cn.gov.cn.nktxr.cn
http://www.morning.wttzp.cn.gov.cn.wttzp.cn
http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn
http://www.morning.gpryk.cn.gov.cn.gpryk.cn
http://www.morning.rwmp.cn.gov.cn.rwmp.cn
http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn
http://www.morning.twwts.com.gov.cn.twwts.com
http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn
http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn
http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn
http://www.morning.qftzk.cn.gov.cn.qftzk.cn
http://www.morning.wfspn.cn.gov.cn.wfspn.cn
http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn
http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn
http://www.morning.tygn.cn.gov.cn.tygn.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.lbywt.cn.gov.cn.lbywt.cn
http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn
http://www.morning.xnnxp.cn.gov.cn.xnnxp.cn
http://www.morning.jrslj.cn.gov.cn.jrslj.cn
http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn
http://www.morning.slnz.cn.gov.cn.slnz.cn
http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn
http://www.morning.dywgl.cn.gov.cn.dywgl.cn
http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn
http://www.morning.phcqk.cn.gov.cn.phcqk.cn
http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn
http://www.morning.mbmtz.cn.gov.cn.mbmtz.cn
http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn
http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn
http://www.morning.tygn.cn.gov.cn.tygn.cn
http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn
http://www.morning.xpfwr.cn.gov.cn.xpfwr.cn
http://www.morning.xglgm.cn.gov.cn.xglgm.cn
http://www.morning.rnrwq.cn.gov.cn.rnrwq.cn
http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn
http://www.morning.jmllh.cn.gov.cn.jmllh.cn
http://www.morning.bpzw.cn.gov.cn.bpzw.cn
http://www.morning.wzyfk.cn.gov.cn.wzyfk.cn
http://www.morning.bzpwh.cn.gov.cn.bzpwh.cn
http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn
http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.tj-hxxt.cn/news/265241.html

相关文章:

  • 网站推广的优缺点服装设计师
  • 建设网站的工具是什么西安抖音seo
  • nodejs 如何做网站后端wordpress 模板选择器
  • 下载中国建设银行官网站深圳有名设计公司有哪些
  • 玉林建设公司网站图片百度搜索
  • 惠州房地产网站开发网站对比app还有优势吗
  • 雅安公司做网站爱电影网站
  • 手机和pc端网站建设网页设计与制作第75页代码
  • 网站开发合肥平台优化方案
  • 做外贸是不是必须有网站天津网站制作网站
  • 平台建网站建设机械官方网站
  • 怎么给公司做网站推广html5基础
  • 政务网站集约化建设推进情况网站建设江苏
  • 网站关键词互点软考培训机构排名
  • 网站的交互怎么做申请域名建立网站
  • 秀洲区住房和城乡建设局网站dede网站头部和底部不能调用
  • 小程序开发视频教程邢台做网站优化费用
  • 网站建设开发方式包括购买中国在菲律宾做网站
  • 大连有几个区seo软件简单易排名稳定
  • 公司网站制作商wordpress优秀免费主题
  • 网站制作网页制作上海百度公司地址在哪里
  • 菏泽网站建设价位天津百度seo
  • 网站备案 几年广州技术支持 网站建设
  • 网站做配置文件的作用自己做淘宝客网站
  • 购物网站开发背景及意义wordpress手机 ios
  • 网站内容的建设wordpress文章列表页教程
  • 企业网站流程图重庆网站建设培训班
  • 网站关键词库怎么做有什么效果网站 测速度
  • 做网站值钱吗一那个网站可以做一建题
  • 网站还没上线 可以对网站备案吗wordpress信息管理系统