博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python多线程
阅读量:5238 次
发布时间:2019-06-14

本文共 1454 字,大约阅读时间需要 4 分钟。

原文

http://www.csdn.net/article/2013-05-02/2815101

 

多线程主要就是线程同步的问题

比如下面的例子

import threadingTOTAL = 0class CountThread(threading.Thread):    def run(self):        global TOTAL        for i in range(100):            TOTAL = TOTAL + 1        print('%s\n' % (TOTAL))a = CountThread()b = CountThread()a.start()b.start()

这问题是由于代码的TOTAL=TOTAL+1这行不是原子的。上下文切换切换可以刚好在这行执行的中间发生。我们需要在代码周围加上锁让它成为一个原子操作。

import threadingTOTAL = 0MY_LOCK = threading.Lock()class CountThread(threading.Thread):    def run(self):        global TOTAL        for i in range(100000):            MY_LOCK.acquire()            TOTAL = TOTAL + 1            MY_LOCK.release()        print('%s\n' % (TOTAL))a = CountThread()b = CountThread()a.start()b.start()

 

#coding=utf-8import threadingfrom time import sleep, ctimeloops = [4, 2]def loop(nloop, nsec):    print "start loop", nloop, "at", ctime()    sleep(nsec)    print "loop", nloop, "done at", ctime()def main():    print "starting at", ctime()    threads = []    nloops = range(len(loops))    for i in nloops:        t = threading.Thread(target=loop, args=(i, loops[i]))        threads.append(t)    for i in nloops:        threads[i].start()    for i in nloops:        threads[i].join()    print "all done at", ctime()if __name__ == "__main__":    main()

在这个函数中,是所有的线程都创建了以后,然后一起调用start启动。

join()方法,使得一个线程可以等待另一个线程执行结束后再继续运行。这个方法还可以设定一个timeout参数,避免无休止的等待。因为两个线程顺序完成,看起来象一个线程,所以称为线程的合并。

转载于:https://www.cnblogs.com/virusdefender/p/3574589.html

你可能感兴趣的文章
递归函数,二分运算,正则表达式
查看>>
Flutter之内置动画(转)
查看>>
MySql优化相关概念的理解笔记
查看>>
数据库解决方案
查看>>
DataContract和DataMember的作用
查看>>
js如何获取response header信息
查看>>
python_文件的打开和关闭
查看>>
ADO.NET介绍
查看>>
iOS: 数据持久化方案
查看>>
【C#】【Thread】Monitor和Lock
查看>>
UVALive - 3635 - Pie(二分)
查看>>
集合类List,set,Map 的遍历方法,用法和区别
查看>>
Scala入门系列(十):函数式编程之集合操作
查看>>
pulseaudio的交叉编译
查看>>
Cracking The Coding Interview 1.1
查看>>
vb.net 浏览文件夹读取指定文件夹下的csv文件 并验证,显示错误信息
查看>>
NetworkInterface的使用
查看>>
元素自动居中显示
查看>>
JDBC 时间处理
查看>>
hadopp 环境搭建
查看>>