commandwrapper ay isang Python module upang wrap ang shell ng command sa isang Python may sinulid bagay.
Paggamit:
Gusto mong ilunsad ang sumusunod na command ng malakas na palo sa isang thread:
[User @ localhost ~] $ l -l | grep pdf | WC -l
5
dito ay kung paano mo maaaring gawin ito:
>>> L = WrapCommand ('l -l')
>>> GrepPdf = WrapCommand ('grep pdf')
>>> WC = WrapCommand ('WC -l')
>>> Wc.stdin = GrepPdf
>>> GrepPdf.stdin = l
>>> Wc.start ()
>>> #Do Mga bagay-bagay
...
>>> Wc.join ()
>>> Wc.results
(5 n ',' ')
ari-arian ng 'mga resulta' ay isang tuple (stdoutdata, stderrdata)
Maaari mo ring gawin ito sa ganitong paraan:
>>> L = WrapCommand ('l -l | grep pdf | WC -l', shell = True)
>>> Ls.start ()
>>> #Do Mga bagay-bagay
>>> Ls.join ()
>>> Ls.results [0]
'5 n'
Kakailanganin mong tukuyin ang 'shell = True' kapag ang command na nais mong isagawa ay aktwal na built in sa shell. ibig sabihin: sa Windows kung gumamit ka ng built in na mga utos tulad ng 'dir' o 'kopya': http://docs.python.org/library/subprocess.html#subprocess.Popen
Ang layunin ng paggawa nito sa isang thread ay kapag ay maaaring tumagal ang mga command sa itaas ng ilang oras, at na nais mong magsagawa ng iba pang mga gawain samantala. Maaari mong tingnan ang proseso ay tumatakbo pa rin sa:
>>> Wc.is_alive ()
Hindi totoo
'True' ay dapat ibalik kung tumatakbo pa rin. Upang wakasan ito maaga (yan ay deadlocked ito) mayroon kang, 'Patayin ()' 'wakasan ()' o 'send_signal (signal) mga pamamaraan na kung saan ay sa sarili nagsasalita. Kapag nais mong maghintay para sa mga thread sa dulo, gamitin ang paraan ng 'sumali ()': http://docs.python.org/library/threading.html#threading.Thread.join
Gusto mong ilunsad ang sumusunod na command malakas na palo nang hindi threading:
[User @ localhost ~] $ l -l | grep pdf | WC -l
5
dito ay kung paano mo maaaring gawin ito:
>>> L = WrapCommand ('l -l')
>>> GrepPdf = WrapCommand ('grep pdf')
>>> WC = WrapCommand ('WC -l')
>>> WC (GrepPdf (l))
'5 n'
Iwasan ang paggawa nito para sa mga proseso kung saan ang isang malaking halaga ng data ay piped sa pagitan ng bawat command.
sa halip, gawin ito sa ganitong paraan:
>>> L = WrapCommand ('l -l | grep pdf | WC -l', shell = True)
>>> L ()
'5 n'
Gusto ang mga may sinulid na pamamaraan sa halip kung ito ay maaaring tumagal ng isang mahabang panahon at na nais mong magsagawa ng iba pang mga gawain samantala.
Maaari mong tukuyin ang isa pang shell para sa pagpapatakbo ng command:
>>> L = WrapCommand ('l', shell = True, executable = 'C: /windows/System32/WindowsPowerShell/v1.0/powershell.exe')
>>>-Print l ()
& Nbsp; Directory: C: mga gumagamit Yves python_tests
Mode LastWriteTime Haba Pangalan
---- ------------- ------ ----
-a --- 27/01/2011 00:14 7006 commandwrapper.py
-a --- 27/01/2011 00:15 7048 commandwrapper.pyc
Maaari mo ring gamitin ang konteksto Management (with_item): http://docs.python.org/reference/compound_stmts.html#grammar-token-with_item
Halimbawa:
>>> May WrapCommand ('l -l') bilang l:
... Na may WrapCommand ('grep pdf') bilang GrepPdf:
... Na may WrapCommand ('WC -l') bilang WC:
... Wc.stdin = GrepPdf
... GrepPdf.stdin = l
... Wc.start ()
... #Do Mga bagay-bagay
... Wc.join ()
...
>>> Wc.results
(5 n ',' ')
Baka gusto mo ring simpleng magkaroon ng subprocess objet:
>>> L = WrapCommand ('l -l')
>>> Lscmd = ls.makeCmd ()
>>>
ang ibinalik na bagay (lscmd sa halimbawa sa itaas) ay isang karaniwang subprocess.Popen na bagay
WrapOnceCommand ay kapareho ng WrapCommand, ngunit ang cmd katangian na isang subprocess.Popen object ay gagawin kapag at para sa lahat Samakatuwid ang run methode (o ang bagay) ay maaari lamang na tinatawag na isang beses. Ang layunin nito upang ilunsad ang isang command sa isang thread, at magkaroon ng command na ito madaling simulan / tumigil mula sa ibang lugar
Ano ang bagong sa paglabas:.
- contact info Binago ng may-akda.
Ano ang bagong sa bersyon 0.4:
- Ang Babala dito: http: //docs.python. org / reference / datamodel.html # object .__ del __
- At becasue sisirain ang mga bagay kung saan hindi automaticaly inalis ng mga basurero tulad ng inilarawan dito:. Http://docs.python.org/library/gc.html#gc.garbage Aling maaaring maging sanhi ng pagtaas ng paggamit ng memory
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan