ÀÖÓãµç¾º


½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

Python¾ÍÒµ°à±Ê¼ÇÕûÀí£¨Èý£©

¸üÐÂʱ¼ä:2018Äê07ÔÂ27ÈÕ10ʱ02·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

½ø³Ì¡¢Ï̵߳ÄÇø±ðÓëÓÅȱµã

1. ¶¨ÒåµÄ²»Í¬£º
½ø³ÌÊÇϵͳ½øÐÐ×ÊÔ´·ÖÅäµÄ×îСµ¥Î».
Ïß³ÌÊǽø³ÌµÄÒ»¸öʵÌå,ÊÇCPU½øÐе÷¶ÈµÄ»ù±¾µ¥Î»¡£Ïß³Ì×Ô¼º»ù±¾Éϲ»ÓµÓÐϵͳ×ÊÔ´,Ö»ÓµÓÐÒ»µãÔÚÔËÐÐÖбز»¿ÉÉÙµÄ×ÊÔ´(Èç³ÌÐò¼ÆÊýÆ÷,Ò»×é¼Ä´æÆ÷ºÍÕ»),µ«ÊÇËü¿ÉÓëͬÊôÒ»¸ö½ø³ÌµÄÆäËûµÄÏ̹߳²Ïí½ø³ÌËùÓµÓеÄÈ«²¿×ÊÔ´.
2. Çø±ð£º
Ò»¸ö³ÌÐòÖÁÉÙÓÐÒ»¸ö½ø³Ì,Ò»¸ö½ø³ÌÖÁÉÙÓÐÒ»¸öÏß³Ì.Ï̵߳Ļ®·Ö³ß¶ÈСÓÚ½ø³Ì(×ÊÔ´±È½ø³ÌÉÙ)£¬Ê¹µÃ¶àÏ̳߳ÌÐòµÄ²¢·¢ÐԸߡ£½ø³ÌÔÚÖ´Ðйý³ÌÖÐÓµÓжÀÁ¢µÄÄÚ´æµ¥Ôª£¬¶ø¶à¸öÏ̹߳²ÏíÄڴ棬´Ó¶ø¼«´óµØÌá¸ßÁ˳ÌÐòµÄÔËÐÐЧÂÊ¡£Ï̲߳»Äܹ»¶ÀÁ¢Ö´ÐУ¬±ØÐëÒÀ´æÔÚ½ø³ÌÖÐ
3. ÓÅȱµã£º
Ïß³ÌÖ´ÐпªÏúС£¬µ«²»ÀûÓÚ×ÊÔ´µÄ¹ÜÀíºÍ±£»¤£»¶ø½ø³ÌÕýÏà·´¡£
½ø³ÌµÄ´´½¨²½Öè

# µ¼Èë½ø³ÌÄ£¿é
Import multiprocessing
# ´´½¨Ò»¸ö½ø³ÌµÄʵÁ¦¶ÔÏó
P = Multiprocessing.Process(target=func_name[,args=(Ôª×é), kwargs={×Öµä}])
# ´´½¨²¢Æô¶¯½ø³Ì
p.start()
p.join(5)
ͨ¹ýQueueʵÏÖ½ø³Ì¼äͨÐÅ

# ´´½¨Ò»¸ö¶ÓÁÐ
Q = multiprocessing.Queue()  # 3´ú±í¶ÓÁÐÖÐ×î¶à¿ÉÒÔ½ÓÊÕÈýÌõÏûÏ¢
# Ïò¶ÓÁÐÖÐÌí¼ÓÊý¾Ý
q.put(data)
# ´Ó¶ÓÁÐÖÐÈ¡Êý¾Ý
q.get()
# Åж϶ÓÁÐÖÐÊÇ·ñΪ¿Õ
q.empty()
# Åж϶ÓÁÐÖÐÊÇ·ñÒÑÂú
q.full()
×¢Ò⣺Èç¹ûÊÇͨ¹ý½ø³Ì³Ø´´½¨µÄ½ø³Ì£¬ÄÇô¶ÓÁеÄʹÓÃÒªÓÃ
multiprocessing.Manager().Queue()µÄ·½Ê½£¬·ñÔò»á±¨´í¡£
½ø³Ì³ØPool

µ±ÐèÒª´´½¨µÄ×Ó½ø³ÌÊýÁ¿²»¶àʱ£¬¿ÉÒÔÖ±½ÓÀûÓÃmultiprocessingÖеÄProcess¶¯Ì¬³ÉÉú¶à¸ö½ø³Ì£¬µ«Èç¹ûÊÇÉϰÙÉõÖÁÉÏǧ¸öÄ¿±ê£¬ÊÖ¶¯µÄÈ¥´´½¨½ø³ÌµÄ¹¤×÷Á¿¾Þ´ó£¬´Ëʱ¾Í¿ÉÒÔÓõ½multiprocessingÄ£¿éÌṩµÄPool·½·¨¡£
³õʼ»¯Poolʱ£¬¿ÉÒÔÖ¸¶¨Ò»¸ö×î´ó½ø³ÌÊý£¬µ±ÓÐеÄÇëÇóÌá½»µ½PoolÖÐʱ£¬Èç¹û³Ø»¹Ã»ÓÐÂú£¬ÄÇô¾Í»á´´½¨Ò»¸öеĽø³ÌÓÃÀ´Ö´ÐиÃÇëÇó£»µ«Èç¹û³ØÖеĽø³ÌÊýÒѾ­´ïµ½Ö¸¶¨µÄ×î´óÖµ£¬ÄÇô¸ÃÇëÇó¾Í»áµÈ´ý£¬Ö±µ½³ØÖÐÓнø³Ì½áÊø£¬²Å»áÓÃ֮ǰµÄ½ø³ÌÀ´Ö´ÐÐеÄÈÎÎñ
½ø³Ì³ØµÄʵÏÖ²½Öè

# µ¼Èë½ø³Ì³ØÄ£¿é
From multiprocessing import Pool
# ¶¨Òå½ø³Ì³Ø£¬×î´ó½ø³Ì³Ø×î´óÊý
Po = Pool(3)
# ͨ¹ý½ø³Ì³Øµ÷ÓÃÄ¿±ê  apply_async·Ç×èÈû£¬²»»áµÈ´ý×Ó½ø³Ì½áÊø£»apply×èÈû£¬»áµÈ´ý×Ó½ø³Ì½áÊø²Å½áÊø
po.apply_async(Òªµ÷ÓõÄÄ¿±ê,(´«µÝ¸øÄ¿±êµÄ²ÎÊýÔª×æ,))
# ¹Ø±Õ½ø³Ì³Ø
Po.close()
# µÈ´ý½ø³Ì³ØÖ´ÐÐÍê±Ï
Po.join()
ʲôÊÇЭ³Ì£¿
Э³Ì£¬ÓÖ³ÆÎ¢Ị̈߳¬Ï˳Ì¡£Ó¢ÎÄÃûCoroutine¡£Ð­³Ì£¬ÀûÓÃÏß³ÌÔڵȴýij¸ö×ÊÔ´µÄÆÚ¼äÖ´ÐÐÆäËûº¯Êý£¬Çл»×ÊÔ´ÏûºÄ·Ç³£Ð¡£¬Ð­³ÌЧÂÊÏ൱¿ì¡£
½ø³Ì¡¢Ï̡߳¢Ð­³ÌµÄÇø±ð£¿

½ø³Ì¡¢Ï̡߳¢Ð­³ÌµÄÇø±ð
½ø³ÌÊÇ×ÊÔ´·ÖÅäµÄµ¥Î»£¬ÕæÕýÖ´ÐдúÂëµÄÊÇỊ̈߳¬²Ù×÷ÏµÍ³ÕæÕýµ÷¶ÈµÄÊÇÏ̡߳£
½ø³ÌûÓÐÏß³ÌЧÂʸߣ¬½ø³ÌÕ¼ÓÃ×ÊÔ´¶à£¬Ïß³ÌÕ¼ÓÃ×ÊÔ´ÉÙ£¬±ÈÏ̸߳üÉÙµÄÊÇЭ³Ì¡£
Э³ÌÒÀÀµÓÚÏ̡߳¢Ïß³ÌÒÀÀµÓÚ½ø³Ì£¬½ø³ÌÒ»ËÀÏ̱߳عÒ£¬Ïß³ÌÒ»¹ÒЭ³Ì±ØËÀ
Ò»°ã²»ÓÃ¶à½ø³Ì£¬¿ÉÒÔ¿¼ÂÇʹÓöàỊ̈߳¬Èç¹û¶àÏß³ÌÀïÃæÓкܶàÍøÂçÇëÇó£¬ÍøÂç¿ÉÄÜ»áÓжÂÈû£¬´ËʱÓÃЭ³Ì±È½ÏºÏÊÊ¡£

ʲôÊÇGIL£¿

GIL²¢²»ÊÇPythonµÄÌØÐÔ£¬PythonÍêÈ«¿ÉÒÔ²»ÒÀÀµÓÚGIL¡£GILÈ«³ÆGlobal Interpreter Lock¡£ËüÊÇÔÚʵÏÖPython½âÎöÆ÷(CPython)ʱËùÒýÈëµÄÒ»¸ö¸ÅÄî¡£GILÎÞÒɾÍÊÇÒ»°ÑÈ«¾ÖÅÅËûËø¡£
Python GILÆäʵÊǹ¦ÄܺÍÐÔÄÜÖ®¼äȨºâºóµÄ²úÎËüÓÈÆä´æÔڵĺÏÀíÐÔ£¬Ò²ÓнÏÄѸıäµÄ¿Í¹ÛÒòËØ¡£ÒòΪGILµÄ´æÔÚ£¬Ö»ÓÐIO Bound³¡¾°ÏµöàÏ̻߳áµÃµ½½ÏºÃµÄÐÔÄÜ£¬Èç¹û¶Ô²¢ÐмÆËãÐÔÄܽϸߵijÌÐò¿ÉÒÔ¿¼ÂǰѺËÐIJ¿·ÖÒ²³ÉCÄ£¿é£¬»òÕßË÷ÐÔÓÃÆäËûÓïÑÔʵÏÖ
GILÔڽϳ¤Ò»¶Îʱ¼äÄÚ½«»á¼ÌÐø´æÔÚ£¬µ«Êǻ᲻¶Ï¶ÔÆä½øÐиĽø¡£
×÷ÕߣºÀÖÓã²¥¿ÍpythonÅàѵѧԺ
Ê×·¢£ºhttp://python.itcast.cn/
0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿