Python±ê×¼¿âµÄthreading.ThreadÀà
Õâ¸öÀà±íʾÔÚµ¥¶ÀµÄ¿ØÖÆÏß³ÌÖÐÔËÐеĻ¡£ÓÐÁ½ÖÖ·½·¨¿ÉÒÔÖ¸¶¨ÕâÖֻ£¬¸ø¹¹Ô캯Êý´«µÝ»Øµ÷¶ÔÏ󣬻òÕßÔÚ×ÓÀàÖÐÖØÐ´run() ·½·¨¡£ÆäËû·½·¨£¨³ýÁ˹¹Ô캯Êý)¶¼²»Ó¦ÔÚ×ÓÀàÖб»ÖØÐ´¡£»»¾ä»°Ëµ£¬ÔÚ×ÓÀàÖÐÖ»ÓÐ__init__()ºÍrun()·½·¨±»ÖØÐ´¡£
Ò»µ©Ï̶߳ÔÏó±»´´½¨£¬ËüµÄ»î¶¯ÐèҪͨ¹ýµ÷ÓÃÏ̵߳Ästart()·½·¨À´Æô¶¯¡£Õâ·½·¨ÔÙµ÷ÓÿØÖÆÏß³ÌÖеÄrun·½·¨¡£
Ò»µ©Ï̱߳»¼¤»î£¬ÔòÕâÏ̱߳»ÈÏΪÊÇ'alive'(»î¶¯)¡£µ±ËüµÄrun()·½·¨ÖÕֹʱ-Õý³£Í˳ö»òÅ׳öδ´¦ÀíµÄÒì³££¬Ôò»î¶¯×´Ì¬Í£Ö¹¡£isAlive()·½·¨²âÊÔÏß³ÌÊÇ·ñÊǻµÄ¡£
Ò»¸öÏß³ÌÄܵ÷ÓñðµÄÏ̵߳Äjoin()·½·¨¡£Õ⽫×èÈûµ÷ÓÃỊ̈߳¬Ö±µ½ÓµÓÐjoin()·½·¨µÄÏ̵߳ĵ÷ÓÃÖÕÖ¹¡£
Ïß³ÌÓÐÃû×Ö¡£Ãû×ÖÄÜ´«¸ø¹¹Ô캯Êý£¬Í¨¹ýsetName()·½·¨ÉèÖã¬ÓÃgetName()·½·¨»ñÈ¡¡£
Ïß³ÌÄܱ»±êʶΪ'daemon thread'(ÊØ»¤Ïß³Ì).Õâ±êÖ¾µÄÌØµãÊǵ±Ê£ÏµÄÈ«ÊÇÊØ»¤Ïß³Ìʱ£¬ÔòPython³ÌÐòÍ˳ö¡£ËüµÄ³õʼֵ¼Ì³ÐÓÚ´´½¨Ï̡߳£Õâ±êÖ¾ÓÃsetDaemon()·½·¨ÉèÖã¬ÓÃisDaemon()»ñÈ¡¡£
´æÔÚ'main thread'(Ö÷Ïß³Ì),Ëü¶ÔÓ¦ÓÚPython³ÌÐòµÄ³õʼ¿ØÖÆÏ̡߳£Ëü²»ÊǺǫ́Ï̡߳£
ÓпÉÄÜ´æÔÚ'dummy thread objects'(ÑÆÏ̶߳ÔÏó)±»´´½¨¡£ÕâЩÏ̶߳ÔÓ¦ÓÚ'alien threads'(ÍⲿÏß³Ì),ËüÃÇÔÚPythonµÄÏß³ÌÄ£ÐÍÖ®Íâ±»Æô¶¯£¬ÏñÖ±½Ó´ÓCÓïÑÔ´úÂëÖÐÆô¶¯¡£ÑÆÏ̶߳ÔÏóÖ»ÓÐÓÐÏ޵ŦÄÜ£¬ËüÃÇ×ÜÊDZ»ÈÏΪÊǻµÄ£¬ÊØ»¤Ị̈߳¬²»ÄÜʹÓÃjoin()·½·¨¡£ËüÃÇ´Ó²»Äܱ»É¾³ý£¬¼ÈÈ»ËüÎÞ·¨¼à²âµ½ÍⲿÏ̵߳ÄÖÐÖ¹¡£
class Thread(group=None, target=None, name=None, args=(), kwargs={})
¹¹Ô캯ÊýÄÜ´øÓйؼü×Ö²ÎÊý±»µ÷Óá£ÕâЩ²ÎÊýÊÇ:
group Ó¦µ±Îª None£¬Îª½«À´ÊµÏÖThreadGroupÀàµÄÀ©Õ¹¶ø±£Áô¡£
target ÊDZ» run()·½·¨µ÷ÓõĻص÷¶ÔÏó. ĬÈÏӦΪNone, Òâζ×ÅûÓжÔÏó±»µ÷Óá£
name ΪÏß³ÌÃû×Ö¡£Ä¬ÈÏ£¬ÐÎʽΪ'Thread-N'µÄΨһµÄÃû×Ö±»´´½¨£¬ÆäÖÐN ÊDZȽÏСµÄÊ®½øÖÆÊý¡£
argsÊÇÄ¿±êµ÷ÓòÎÊýµÄtuple£¬Ä¬ÈÏΪ()¡£
kwargsÊÇÄ¿±êµ÷ÓõIJÎÊýµÄ¹Ø¼ü×Ödictionary£¬Ä¬ÈÏΪ{}¡£
Èç¹û×ÓÏß³ÌÖØÐ´Á˹¹Ô캯Êý£¬ËüÓ¦±£Ö¤µ÷ÓûùÀàµÄ¹¹Ô캯Êý(Thread.__init__())£¬ÔÚÏß³ÌÖнøÐÐÆäËû¹¤×÷֮ǰ¡£
start() Æô¶¯Ï̻߳¡£
ÔÚÿ¸öÏ̶߳ÔÏóÖÐ×î¶à±»µ÷ÓÃÒ»´Î¡£Ëü°²ÅŶÔÏóµÄrun() ±»µ÷ÓÃÔÚÒ»µ¥¶ÀµÄ¿ØÖÆÏß³ÌÖС£
run()
ÓÃÒÔ±íʾÏ̻߳µÄ·½·¨¡£
Äã¿ÉÄÜÔÚ×ÓÀàÖØÐ´Õâ·½·¨¡£±ê×¼µÄ run()·½·¨µ÷ÓÃ×÷Ϊtarget´«µÝ¸ø¶ÔÏó¹¹Ô캯ÊýµÄ»Øµ÷¶ÔÏó¡£Èç¹û´æÔÚ²ÎÊý£¬Ò»ÏµÁйؼü×Ö²ÎÊý´ÓargsºÍkwargs²ÎÊýÏàÓ¦µØÆð×÷Óá£
join([
Ïà¹ØÎĵµ£º
import types
type(x) is types.IntType # ÅжÏÊÇ·ñint ÀàÐÍ
type(x) is types.StringType #ÊÇ·ñstringÀàÐÍ
.........
--------------------------------------------------------
³¬¼¶¶ñÐĵÄģʽ£¬²»ÓüÇסtypes.StringType
import types
type(x) == types(1) # ......
ÎÊÌâÃèÊö£º¼ÙÉèÎÒÓÐÕâÑùÁ½¸ölist£¬
Ò»¸öÊÇlist1£¬list1 = [1, 2, 3, 4, 5]
Ò»¸öÊÇlist2£¬list2 = [1, 4, 5]
ÎÒÃÇÈçºÎµÃµ½Ò»¸öеÄlist£ ......
¿ª·¢»·¾³£ºUbuntu9.10,python2.6,gcc4.4.11,ubuntuϵÄpythonÔËÐаüºÍ¿ª·¢°üÊÇ·Ö¿ªµÄ£¬Òò´ËÐèÒªÔÚÐÂÀûµÃÀïÃæ°²×°python-all-dev,´Ó¶ø¿ÉÒÔÔÚ´úÂëÖÐÒýÓÃpythonµÄÍ·ÎļþºÍ¿â¡£2.ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ¿ÉÒÔ¹©pythonµ÷ÓõÄcÀ©Õ¹Ä£¿é£¬¼ÙÉèc³ÌÐòÎļþÃûΪfoo.c:´úÂë#include <Python.h>
static PyObject* foo_b ......
python cookbook
Recipe 2.5. Counting Lines in a File
£¬
½ñÈÕ·¢ÏÖÒ»¸öк¯Êý
enumerate
¡£Ò»°ãÇé¿ö϶ÔÒ»¸öÁбí»òÊý×é¼ÈÒª±éÀúË÷ÒýÓÖÒª±éÀúÔªËØÊ±£¬»áÕâÑùд£º
for
i
in
range
(0
,
len
(list
)):
&n ......
È«ÎÄÀ´×Ô£ºIT¹¤³Ì¼¼ÊõÍø http://www.systhinker.com/html/91/n-11591.html
×òÌìºÍ·ÉÌìÎèÕßÌÖÂÛ¾²Ì¬ÀàÐÍÓïÑԺͶ¯Ì¬ÀàÐÍÓïÑÔÓÅÁӱȽϵÄʱºò£¬Ëµµ½PythonûÓÐÖØÔØ»úÖÆµÄÎÊÌâ¡£
ºóÀ´ÏëÏëͦÓÐÒâ˼µÄ£¬°Ñ˼¿¼µÄ¾¹ý¼Ç¼ÏÂÀ´£¬»¶ÓÅÄש¡£
ÖØÔØ£¨overload£©ºÍ¸²¸Ç£¨override£©£¬ÔÚC++£¬Java£¬C#µÈ¾²Ì¬ÀàÐÍÓïÑÔÀàÐÍÓïÑÔÖУ¬ÕâÁ½¸ö ......