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)' –
那么我怎样才能避免错误? –
这实际上取决于你想要做什么,有可能更简单的方法来做你想做的。回调逻辑背后的想法是什么? –