易截截图软件、单文件、免安装、纯绿色、仅160KB

Python 线程同步

多个执行线程经常要共享数据,如果仅仅读取共享数据还好,但是如果多个线程要修改共享数据的话就可能出现无法预料的结果。
    假如两个线程对象t1
和t2
都要对数值num=0
进行增1运算,那么t1
和t2
都各对num
修改10
次的话,那么num
最终的结果应该为20
。但是如果当t1
取得num
的值时(假如此时num
为0
),系统把t1
调度为“sleeping
”状态,而此时t2
转换为“running
”状态,此时t2
获得的num
的值也为0
,然后他把num+1
的值1
赋给num
。系统又把t2
转化为“sleeping
”状态,t1
为“running
”状态,由于t1
已经得到num
值为0
,所以他也把num+1
的值赋给了num
为1
。本来是2
次增1
运行,结果却是num
只增了1
次。类似这样的情况在多线程同时执行的时候是有可能发生的。所以为了防止这类情况的出现就要使用线程同步机制。
    最简单的同步机制就是“锁”
    锁对象用threading.RLock
类创建
    mylock = threading.RLock()
    如何使用锁来同步线程呢?线程可以使用锁的acquire()
(获得)方法,这样锁就进入“locked
”状态。每次只有一个线程可以获得锁。如果当另一个线程试图获得这个锁的时候,就会被系统变为“blocked
”状态,直到那个拥有锁的线程调用锁的release()
(释放)方法,这样锁就会进入“unlocked
”状态。“blocked
”状态的线程就会收到一个通知,并有权利获得锁。如果多个线程处于“blocked
”状态,所有线程都会先解除“blocked
”状态,然后系统选择一个线程来获得锁,其他的线程继续沉默(“blocked
”)。
import threading
mylock = threading.RLock()
class mythread(threading.Thread)
    ...
    def run(self ...):
        ...     #此处 不可以
放置修改共享数据的代码
        mylock.acquire()
        ...     #此处 可以
放置修改共享数据的代码
        mylock.release()
   


相关文档:

python31与C交互

1.c调用python:
   实例代码:
main.c调用test.py的
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//main.c
#include <windows.h>
......

python Eric 的使用

        最近使用python过程中,python界面的编程工具GTK-Python,但是界面的美观性不如Qt-Creator中的Qt-Designer,无法实现设计是视图绘制,有点让人失望。
        网上发现有人介绍python Eric IDE,比较好奇,安装上看看吧:
  &nb ......

python中datetime的比较方法使用


python中的datetime module是专门处理时间相关内容的模块,功能很强大,但是反而显得比较复杂。
一下代码是用来求从mysql中取到的timestamp和当前时间比较,求时间差的方法
import datetime
lasttime=a.get_last_timestamp(sid=40)[-1]["last_time"] #取到timestamp
delta = datetime.datetime.now()-lasttime   # ......

python字符串使用总结



来源:
作者:
灵剑
1.python 字符串通常有单引号('...')、双引号(...)、三引号(...)或('''...''')包围,三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,

1.python
字符串通常有单引号('...')、双引号("...")、三引号("""... ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号