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()
 
Ïà¹ØÎĵµ£º
pythonÖеÄdatetime moduleÊÇרÃÅ´¦Àíʱ¼äÏà¹ØÄÚÈݵÄÄ£¿é,¹¦ÄܺÜÇ¿´ó,µ«ÊÇ·´¶øÏԵñȽϸ´ÔÓ¡£
һϴúÂëÊÇÓÃÀ´Çó´ÓmysqlÖÐÈ¡µ½µÄtimestampºÍµ±Ç°Ê±¼ä±È½Ï£¬Çóʱ¼ä²îµÄ·½·¨
import datetime
lasttime=a.get_last_timestamp(sid=40)[-1]["last_time"] #È¡µ½timestamp
delta = datetime.datetime.now()-lasttime # ......
×î½ü£¬ÏëÔÚÎÒµÄYouMoney£¨http://code.google.com/p/youmoney/£©ÀïÃæÔö¼ÓÌáÈ¡Óû§²Ù×÷ϵͳ°æ±¾ÐÅÏ¢¡£±ÈÈçwindowsÓû§£¬¿ÉÄÜÒª·µ»ØWindows XP ,»òÕßWindows 2003, Æ»¹ûÓû§Ó¦¸Ã·µ»ØMac OS X 10.5.8¡£ÓÃÁ˺ܶà°ì·¨£¬°üÀ¨ÔÚmacϵͳÀïµ÷ÓÃϵͳÃüÁȡ»·¾³±äÁ¿£¬µÈµÈ¡£×îºóÎÞÒâ·¢ÏÖ£¬ÔÀ´pythonÀïÀïÃæÓиöpl ......
Öð²½Ñݽø
f=open('/etc/motd','r')
longest=0
while True:
lineLen=len(f.readline().strip())
if not lineLen: break
if lineLen > longest:
longest=lineLen
f.close()
return longest
ÎÊÌâ£ºÒ»Ö±Õ¼Ó ......
Ref : http://www.swig.org/translations/chinese/tutorial.html
¼ÙÉèÄãÓÐһЩcÄãÏëÔÙ¼ÓPython.¡£¾ÙÀýÀ´ËµÓÐÕâôһ¸öÎļþexample.c
/* File : example.c */
#include <time.h>
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
&nbs ......