Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ :

pythonÖеĶàÏß³Ì


2007-07-15
pythonÖеĶàỊ̈߳¨2£©
¹Ø¼ü×Ö: python thread threading
    ÎÒÃÇÔÚÉÏÒ»ÕÂÖп´µ½Ê¹ÓÃthreading.Thread.join()¿ÉÒÔ±ÜÃâÖ÷³ÌÐòÔڵȴýÆäËüÏ߳̽áÊøµÄ¹ý³ÌÖеõ½Ê±¼äƬ¡£ÊÂʵÉÏ£¬ÔÚÏ̱߳à³ÌÖо­³£»áÓöµ½Ò»¸öÏß³ÌÐèÒªµÈ´ýÁíÒ»¸öÏß³ÌÖеÄÇé¿ö¡£ÔÚÕâÖÖÇé¿öÏ£¬ÐèÒªÖØÉêµÄÊÇ£¬ÎÒÃDz»Ï£ÍûµÈ´ýµÄÏ̻߳ñµÃʱ¼äƬ¡£
    ½â¾öµÄ°ì·¨ÊÇʹÓÃÌõ¼þ±äÁ¿£¬¾ÍÏñËüµÄÃû³Æ£¬´úÂëʹÓÃËüÃÇÀ´µÈ´ýһЩÌõ¼þµÄ³ÉÁ¢¡£´ó¶àÊýÏß³Ìϵͳ¶¼Ö§³ÖÌõ¼þ±äÁ¿£¬pythonµÄthreading°üÒ²²»ÀýÍâ¡£
    ÀýÈ磬pthreads°ü£¬Ê¹ÓÃpthread_condÀ´´ú±íÕâÖÖ±äÁ¿£¬²¢ÇÒÓк¯Êýpthread_cond_wait()£¬Ëü´ú±íÒ»¸öÏ̵߳÷ÓõȴýÒ»¸öʼþµÄ·¢Éú£»ÁíÒ»¸öº¯Êý,pthread_cond_signal()£¬ÁíÒ»¸öÏ̵߳÷Ó㬴ú±íÉùÃ÷µÈ´ýµÄÏß³ÌʼþÒѾ­·¢Éú¡£
    pythonÖеÄÌõ¼þ±äÁ¿½ÏÖ®CÓïÑÔÖеÄÀ´Ëµ¸üÈÝÒ×ʹÓ㬶ÔÓÚµÚÒ»²ã´ÎµÄÌõ¼þ±äÁ¿À´Ëµ£¬¿ÉÒÔʹÓÃÀàthreading.Condition,ËüÄܹ»ÔÚ´ó¶àÊýµÄÏß³ÌϵͳÖÐÁ¼ºÃµÄ¹¤×÷£¬µ«ÊÇʹÓÃÕâÖÖÌõ¼þ±äÁ¿ÐèÒª½øÐжîÍâµÄ½âËøºÍ±ÕËø²Ù×÷¡£
    pythonÌṩÁËÒ»ÖÖ¸ü¸ß²ã´ÎµÄÀ࣬threading.Event,ËüÊǶÔÓÚthreading.ConditionµÄÒ ......

PythonÏ̱߳à³Ì£¨Ò»£©Ï̶߳ÔÏó

ÎÒÃÇÔÚ×öÈí¼þ¿ª·¢µÄʱºòºÜ¶àÒªÓõ½¶àÏ̼߳¼Êõ¡£ÀýÈçÈç¹û×öÒ»¸öÏÂÔØÈí¼þÏóflashget¾ÍÒªÓõ½¡¢ÏóÔÚÏßÊÓÆµ¹¤¾ßrealplayerÒ²ÒªÓõ½ÒòΪҪͬʱÏÂÔØmedia stream»¹Òª²¥·Å¡£ÆäʵÀý×ÓÊǺܶàµÄ¡£
Ïß³ÌÏà¶Ô½ø³ÌÀ´ËµÊÇ“ÇáÁ¿¼¶”µÄ£¬²Ù×÷ϵͳÓýÏÉÙµÄ×ÊÔ´´´½¨ºÍ¹ÜÀíÏ̡߳£³ÌÐòÖеÄÏß³ÌÔÚÏàͬµÄÄÚ´æ¿Õ¼äÖÐÖ´ÐУ¬²¢¹²ÏíÐí¶àÏàͬµÄ×ÊÔ´¡£
ÔÚpythonÖÐÈçºÎ´´½¨Ò»¸öÏ̶߳ÔÏó
Èç¹ûÄãÒª´´½¨Ò»¸öÏ̶߳ÔÏ󣬺ܼòµ¥£¬Ö»ÒªÄãµÄÀà¼Ì³Ðthreading.Thread£¬È»ºóÔÚ__init__ÀïÊ×Ïȵ÷ÓÃthreading.ThreadµÄ__init__·½·¨¼´¿É
import threading
class mythread(threading.Thread):
def __init__(self, threadname):
threading.Thread.__init__(self, name = threadname)
....
Õâ²Å½ö½öÊǸö¿ÕỊ̈߳¬Îҿɲ»ÊÇÒªËûÀ­¿Õ³µµÄ£¬Ëû¿ÉµÃ¸øÎҸɵãʵÔڻºÜ¼òµ¥£¬ÖØÐ´ÀàµÄrun()·½·¨¼´¿É£¬°ÑÄãÒªÔÚÏß³ÌÖ´ÐÐʱ×öµÄÊÂÇé¶¼·Åµ½ÀïÃæ
import threading
import time
class mythread(threading.Thread):
def __init__(...):
....
def run(self):
for i in range(10):
print self.getName, i
time.sleep(1)
ÒÔÉÏ´úÂëÎÒÃÇÈÃÕâ¸öÏß³ÌÔÚÖ´ÐÐÖ®ºóÿ¸ô1ÃëÊä³öÒ»´ÎÐÅÏ¢µ½ÆÁÄ»£¬10´Îºó½áÊø
getName()ÊÇthre ......

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”״̬¡£Ã¿´ÎÖ»ÓÐÒ»¸öÏ߳̿ÉÒÔ»ñµÃ ......

PythonÏ̱߳à³Ì£¨Èý£©Í¬²½¶ÓÁÐ

ÎÒÃǾ­³£»á²ÉÓÃÉú²úÕß/Ïû·ÑÕß¹ØÏµµÄÁ½¸öÏß³ÌÀ´´¦ÀíÒ»¸ö¹²Ïí»º³åÇøµÄÊý¾Ý¡£ÀýÈçÒ»¸öÉú²úÕßÏ߳̽ÓÊÜÓû§Êý¾Ý·ÅÈëÒ»¸ö¹²Ïí»º³åÇøÀµÈ´ýÒ»¸öÏû·ÑÕßÏ̶߳ÔÊý¾ÝÈ¡³ö´¦Àí¡£µ«ÊÇÈç¹û»º³åÇøµÄ̫С¶øÉú²úÕߺÍÏû·ÑÕßÁ½¸öÒì²½Ï̵߳ÄËٶȲ»Í¬Ê±£¬ÈÝÒ׳öÏÖÒ»¸öÏ̵߳ȴýÁíÒ»¸öÇé¿ö¡£ÎªÁ˾¡¿ÉÄܵÄËõ¶Ì¹²Ïí×ÊÔ´²¢ÒÔÏàͬËٶȹ¤×÷µÄ¸÷Ï̵߳ĵȴýʱ¼ä£¬ÎÒÃÇ¿ÉÒÔʹÓÃÒ»¸ö“¶ÓÁДÀ´Ìṩ¶îÍâµÄ»º³åÇø¡£
´´½¨Ò»¸ö“¶ÓÁД¶ÔÏó
import Queue
myqueue = Queue.Queue(maxsize = 10)
Queue.QueueÀ༴ÊÇÒ»¸ö¶ÓÁеÄͬ²½ÊµÏÖ¡£¶ÓÁг¤¶È¿ÉΪÎÞÏÞ»òÕßÓÐÏÞ¡£¿Éͨ¹ýQueueµÄ¹¹Ô캯ÊýµÄ¿ÉÑ¡²ÎÊýmaxsizeÀ´É趨¶ÓÁг¤¶È¡£Èç¹ûmaxsizeСÓÚ1¾Í±íʾ¶ÓÁ㤶ÈÎÞÏÞ¡£
½«Ò»¸öÖµ·ÅÈë¶ÓÁÐÖÐ
myqueue.put(10)
µ÷ÓöÓÁжÔÏóµÄput()·½·¨ÔÚ¶Óβ²åÈëÒ»¸öÏîÄ¿¡£put()ÓÐÁ½¸ö²ÎÊý£¬µÚÒ»¸öitemΪ±ØÐèµÄ£¬Îª²åÈëÏîÄ¿µÄÖµ£»µÚ¶þ¸öblockΪ¿ÉÑ¡²ÎÊý£¬Ä¬ÈÏΪ1¡£Èç¹û¶ÓÁе±Ç°Îª¿ÕÇÒblockΪ1£¬put()·½·¨¾Íʹµ÷ÓÃÏß³ÌÔÝÍ£,Ö±µ½¿Õ³öÒ»¸öÊý¾Ýµ¥Ôª¡£Èç¹ûblockΪ0£¬put·½·¨½«Òý·¢FullÒì³£¡£
½«Ò»¸öÖµ´Ó¶ÓÁÐÖÐÈ¡³ö
myqueue.get()
µ÷ÓöÓÁжÔÏóµÄget()·½·¨´Ó¶Óͷɾ³ý²¢·µ»ØÒ»¸öÏîÄ¿¡£¿ÉÑ¡²ÎÊýΪblock£¬Ä¬ÈÏΪ1¡£Èç¹û¶ ......

python_ÀàÐͺͶÔÏó


Python ³ÌÐòÖеÄÒ»ÇÐÊý¾Ý¶¼ÊǶÔÏó¡£¶ÔÏó°üÀ¨×Ô¶¨Òå¶ÔÏó¼°»ù±¾µÄÊý¾ÝÀàÐÍÈçÊýÖµ¡¢×Ö·û´®¡¢ÁÐ±í¡¢×ÖµäµÈ¡£ÄãÄܹ»ÒÔÀà»òÀ©Õ¹ÀàÐ͵ķ½Ê½´´½¨×Ô¶¨Òå¶ÔÏó¡£±¾ÕÂÖ÷ÒªÃèÊö Python¶ÔÏóÄ£Ðͼ°µÚËÄÕÂ--ÔËËã·ûÓë±í´ïʽÖÐÒªÓõ½µÄһЩԤ±¸ÖªÊ¶¡£
 
1.1. ÊõÓï
³ÌÐòÖеÄÒ»ÇÐÊý¾Ý¶¼ÊǶÔÏó£¬Ã¿¸ö¶ÔÏó¶¼ÓÐÈý¸ö»ù±¾ÊôÐÔ£¬¼´±êʶ(ÀàËÆÈ˵ıêʶ֤ºÅ)¡¢ÀàÐͺÍÖµ¡£
ÀýÈ磬µ±ÄãдÏ a = 42 ÕâÐдúÂ룬Äã¾Í´´½¨ÁËÒ»¸öֵΪ 42 µÄÕûÊý¶ÔÏó¡£ type()ºÍid()º¯ÊýÓÃÀ´²é¿´¶ÔÏóµÄÀàÐͱêʶ¡£id(a)¿ÉÒԲ鿴¸Ã¶ÔÏóµÄ±êʶ(µ±Ç°µÄʵÏÖÊǸöÔÏóÔÚÄÚ´æÖеÄλÖÃ)¡£ÔÚÕâ¸öÀý×ÓÖУ¬a¾ÍÊÇÕâ¸öλÖõÄÒýÓá£
Ò»
¸ö¶ÔÏóµÄÀà±ð¾ö¶¨ÁË¿ÉÒԶԸöÔÏó½øÐкÎÖÖ²Ù×÷(È磬Õâ¸ö¶ÔÏóÓ㤶ÈÂð?)¡£µ±Ò»¸öÌØ¶¨ÀàÐ͵ĶÔÏó±»´´½¨Ê±£¬Õâ¸ö¶ÔÏó±»³ÆÎª¸ÃÀàÐ͵ÄÒ»¸öʵÀý(×¢Ò⣺²»Òª½«
ÀàÐ͵ĵÄʵÀýºÍÓû§×Ô¶¨ÒåÀàµÄʵÀý»ìÏý)¡£ÔÚÒ»¸ö¶ÔÏó±»´´½¨Ö®ºó£¬ËüµÄ±êʶºÍÀàÐ;ÍÔÙ²»Äܱ»¸Ä±ä¡£Ä³Ð©¶ÔÏóµÄÖµÊǿɱäµÄ£¬ÕâЩ¶ÔÏó¾Í±»³ÆÎª¿É±ä¶ÔÏó
(mutable);ÁíһЩ¶ÔÏóµÄÖµÊDz»¿É±äµÄ£¬ÄǾͱ»³ÆÎª²»±ä¶ÔÏó(immutable)¡£Ä³Àà¶ÔÏó¿ÉÒÔ°üº¬ÆäËü¶ÔÏóµÄÒýÓã¬ÎÒÃdzÆÕâÀà¶ÔÏóΪÈÝÆ÷¡£
×¢1:¹ØÓÚÀàÐ͵IJ»¿É¸Ä±ä
´Ópython2.2¿ªÊ¼£¬Pytho ......

Pythonѧϰ±Ê¼ÇÒ»




·¢
Ïֺܶ๫˾ҪÇóÕÆÎÕһÎű¾ÓïÑÔ£¬Ò»Ö±Ò²Ïë¸ã¸ãÕâ¸ö£¬¿´C++£¬Linux
C±à³ÌÒ²Ö»ÊÇΪÁ˶Ôϵͳ¸ü¼ÓµÄÁ˽⣬°¦£¬ÎҵŤ×÷¶¨Î»ºÃÏñÒ»Ö±¶¼²»ÔõôÃ÷È·£¬ÊÇÒª¸ã¸ö×Ô¼º×îÉó¤µÄÁË£¬ÒÔºóÓÐʱ¼äÔÙ¸ãlinuxC£¬ÕÒ¹¤×÷µÚһλ¡£¡£¡£¹¤
×÷»ù±¾¶¨Î»ÔÚ Java+python£¬´ó²¿·Ö¹«Ë¾Ò²²»»áÒªÇóÒ»¸öÈ˼È×öJavaÒ²×öC++¡£ÔÙ˵ÕâÓïÑÔÒ²ÊÇ´óͬСÒ죬¹Ø¼ü»¹ÊDZà³Ì˼Ïë
d = {"server":"mpilgrim", "database":"master"}
li = ["a", "b", "mpilgrim", "z", "example"]
Tuple ÊDz»¿É±äµÄ list¡£Ò»µ©´´½¨ÁËÒ»¸ö tuple£¬¾Í²»ÄÜÒÔÈκη½Ê½¸Ä±äËü
 t = ("a", "b", "mpilgrim", "z", "example")
Á¬½Ó list Óë·Ö¸î×Ö·û´®
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")   
['server=mpilgrim', 'uid=sa', 'database=master', ......
×ܼǼÊý:40319; ×ÜÒ³Êý:6720; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [6623] [6624] [6625] [6626] 6627 [6628] [6629] [6630] [6631] [6632]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ