0
我正在學習如何使用子過程,爲此(和其他一些原因) 我買了一本書來學習如何使用子過程。這本好書 我不會理解它。在我的書中,他們開始解釋如何在子進程中執行shell命令。 如何在python中執行funcion回調作爲子進程?
我有一個編程問題,我的年齡,並與子流程,我可以 能夠解決它但我需要執行一個回調函數作爲子進程。
我有這樣的代碼呼應的東西,但它是一個shell命令:
import subprocess
proc = subprocess.Popen(['echo', 'Hello, this is child process speaking'],
stdout=subprocess.PIPE, shell=True)
out, err = proc.communicate()
print(out.decode('utf-8'))
我想這個回調作爲子進程來執行:
def callb()
import time as t
print('2')
t.sleep(2)
print('1')
t.sleep(2)
print('0')
我只是嘗試了執行這個回調像這樣(這是一個簡單天真的想法):
proc = subprocess.Popen(callb())
但這給了我以下錯誤:
Traceback (most recent call last):
File "/root/testfile.py", line 6, in <module>
proc = subprocess.Popen(callb())
File "/usr/lib/python3.3/subprocess.py", line 818, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.3/subprocess.py", line 1321, in _execute_child
args = list(args)
TypeError: 'NoneType' object is not iterable
奇怪的是,它不執行回調,但隨後引發這個錯誤! 我做錯了什麼?我忘了什麼嗎?
函數被調用,默認返回None,所以你基本上調用'subprocess.Popen(None)' –
那麼我怎樣才能避免錯誤? –
這實際上取決於你想要做什麼,有可能更簡單的方法來做你想做的。回調邏輯背後的想法是什麼? –