socket网络编程多线程

#!/usr/bin/env python
#-*-coding:utf-8-*-
#多进程
import threading
import time
def thfun():s=0for i in range(30):s+=itime.sleep(0.1)print(s)class MyThread(threading.Thread):def run(self):s=0for i in range(30):s+=itime.sleep(0.1)print(s)if __name__=='__main__':#ths=[threading.Thread(target=thfun) for i in range(2)]ths=[MyThread() for i in range(2)]for th in ths:th.start()#!/usr/bin/env python
#-*-coding:utf-8-*-
#线程间等待 join 线程等待
import threading,timeclass MyThread(threading.Thread):def run(self):for i in range(30):print('threading:',i)time.sleep(0.1)if __name__=='__main__':t=MyThread()t.start()#制定超时1s#t.join(1)t.join()for i in range(10):print('Main:',i)time.sleep(0.1)
#!/usr/bin/env python
#-*-coding:utf-8-*-
#后台线程 daemon
#后台线程不会结束import threading,timedef dmn():print('dmn start...')time.sleep(2)print('dmn end.')def ndmn():print('ndmn start...')time.sleep(1)print('ndmn end.')d=threading.Thread(target=dmn)
#后台线程
d.daemon=True
n=threading.Thread(target=ndmn)print('start...')
d.start()
n.start()
print('end...')#!/usr/bin/env python
#-*-coding:utf-8-*-
#线程等待,指令锁 可重入锁,acquire(blocking=True,timeout=-1) release() threading.RLock
import threading,time,randomshare=4class MyThread(threading.Thread):def __init__(self,i):super().__init__()self.i=idef run(self):global share for d in range(3):lock.acquire()print(share)share+=self.itime.sleep(random.random())print('+',self.i,'=',share)lock.release()lock=threading.Lock()if __name__=='__main__':t=MyThread(2)tt=MyThread(6)t.start()tt.start()#!/usr/bin/env python
#-*-coding:utf-8-*-
#条件变量 生产者,消费者
import threading,timeshare=0share_cond=threading.Condition()class ProThread(threading.Thread):def __init__(self):super().__init__()self.name='Produce'def run(self):global shareif share_cond.acquire():while True:if not share:share+=1print(self.name,share)#唤醒需要本资源的线程share_cond.notify()share_cond.wait()time.sleep(1)#消费者
class CustomThread(threading.Thread):def __init__(self):super().__init__()self.name="Custom"def run(self):global shareif share_cond.acquire():while True:if share:share-=1print(self.name,share)share_cond.notify()share_cond.wait()time.sleep(1)
if __name__=='__main__':t=ProThread()tt=CustomThread()t.start()tt.start()#!/usr/bin/env python
#-*-coding:utf-8-*-
#线程同步,信号量
import threading, timesema=threading.Semaphore(2)
#资源的个数class MyThread(threading.Thread):def __init__(self,name):super().__init__()self.name=namedef run(self):#获得一个资源if sema.acquire():print(self.name,'Had got resource.')time.sleep(1)sema.release()print(self.name,'Had released resource.')
if __name__=='__main__':ths=[MyThread(str(i)+'Sema') for i in range(5)]for th in ths:th.start()
#!/usr/bin/env python
#-*-coding:utf-8-*-
#等待线程 ,线程通信
#定时执行 threading.Timer threading.Timer(3,start)import threading
import timeevent=threading.Event()#等待线程
class MyThreadWait(threading.Thread):def run(self):self.name='Wait Thread'print(self.name,'Wait...')event.wait()#等到内部标记为Trueprint(self.name,'Start...')event.clear()class MyThreadMain(threading.Thread):def run(self):time.sleep(3)print('Main thread set event flag!')event.set()#内部标记为空if __name__=='__main__':thw=MyThreadWait()thm=MyThreadMain()thw.start()thm.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习之道

对待人生的任何事情都要:抓大放小,要事为先 对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大…

socket网络编程ftp

#!/usr/bin/env python #-*-coding:utf-8-*- #ftp客户端 import os import socket import threading import socketserver#下载文件 def get_file(host,port,filepath):ssocket.socket()s.connect((host,port))filepathos.path.join(.,bakc,filepath)fopen(filepath,wb)dataTr…

python类似于java的重写toString方法

python类中的特殊方法: __str__(self)用来重写 people类: class People:所有员工的基类#构造函数def __init__(self, user_id, user_name):self.user_id user_idself.user_name user_name#析构函数def __del__(self):class_name self.__class__.__n…

socket网络编程实现远程备份

#!/usr/bin/env python #-*-coding:utf-8-*- #GUI设计与构建 客户端建立from tkinter import * from tkinter.ttk import * import socket import struct#启动服务 def start(host,port):pass#我的控件 class MyFrame(Frame):def __init__(self,root):super().__init__(root)se…

python正则表达式使用

模板代码: import re #python 自1.5版本增加了re模块,它提供了Perl风格的正则表达式模式 print(re.match(www, www.baidu.com).span()) #在起初位置匹配 line "Cats are smarter than dogs" matchObj re.match( r(.*) are (.*?) .*, line,…

Q-学习,马克尔决策过程:强化学习

马尔可夫决策过程 马尔可夫决策过程是基于马尔可夫过程理论的随机动态系统的最优决策过程。马尔可夫决策过程是序贯决策的主要研究领域。它是马尔可夫过程与确定性的动态规划相结合的产物,故又称马尔可夫型随机动态规划,属于运筹学中数学规划的一个分支…

python对象使用

模板代码: class People:所有员工的基类#构造函数def __init__(self, user_id, user_name):self.user_id user_idself.user_name user_name#析构函数def __del__(self):class_name self.__class__.__name__print(class_name, 销毁)def get_info(self):print(&qu…

机器学习——决策树算法

机器学习——决策树算法原理及案例 标签: 机器学习决策树信息增益基尼指数模型评估 2016-05-04 15:31 43984人阅读 评论(1) 收藏 举报 分类: 机器学习(10) 版权声明:本文为博主原创文章,未经博主允许不…

python运算符重载

重载符模板代码: class Vector:def __init__(self, a, b):self.a aself.b bdef __str__(self):return Vector (%d, %d) % (self.a, self.b)def __add__(self, other):return Vector(self.a other.a, self.b other.b) v1 Vector(2, 10) v2 Vector(5, -2) prin…

机器学习——决策树的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #决策树的建立,训练测试, from sklearn.feature_extraction import DictVectorizer import csv from sklearn import preprocessing from sklearn import tree from sklearn.externals.six import StringIO#读…

python练习代码保存

#codingutf-8 print(中国人) """ Python 保留字:and, exec, not, assert, finally, or, break, for, pass, class, from, print, continue, global, raise, def, if, return, del, import, try, elif, in, while, else, is, with, except, lambda, …

邻近算法(KNN算法)

邻近算法 锁定本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本…

python机器学习常用包下载安装以及使用案例汇总

python安装教程(Windows系统,python3.7为例) https://blog.csdn.net/weixin_40844416/article/details/80889165 在pycharm中切换python版本的方法 https://blog.csdn.net/sgfmby1994/article/details/77876873 Windows下零基础scikit-learn安装(这种方式…

KNN算法的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #knn 的具体实现 import csv import random import math import operator #导入数据集 文件名,split区分那个集 def loadDataset(filename,split,trainintset[],testSet[]):with open(filename,rb) as csvfile:linescsv.…

python机器学习常用包

总结了一些常用的工具: Numpy | 必用的科学计算基础包,底层由C实现,计算速度快。Pandas | 提供了高性能、易用的数据结构及数据分析工具。 seaborn | 数据可视化 NLTK | 自然语言工具包,集成了很多自然语言相关的算法和资源。Sta…

支持向量机(SVM)算法

支持向量机(SVM)算法支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计…

python文件操作以及相对路径和绝对路径问题

绝对路径: PROJECT_ROOT os.path.dirname(os.path.realpath(__file__))#获取项目根目录path os.path.join(PROJECT_ROOT,"data\\edge\\0_fuse.txt") #文件路径edgeMap np.loadtxt(path)相对路径: path "./data/edge/98_fuse.txt&quo…

支持向量机(SVM)的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #支持向量积的使用,建立超平面 from sklearn import svmx[[2,0],[1,1],[2,3]]y[0,0,1] clfsvm.SVC(kernellinear) #kernellinear线性核函数clf.fit(x,y)print(clf)print(clf.support_vectors_) #支持向量 print(clf.supp…

【kaggle入门题一】Titanic: Machine Learning from Disaster

原题: Start here if... Youre new to data science and machine learning, or looking for a simple intro to the Kaggle prediction competitions. Competition Description The sinking of the RMS Titanic is one of the most infamous shipwrecks in hist…