Căt*_*ilă 5 python multithreading python-2.7
这个python源代码有什么问题?
import threading
import subprocess as sub
def ben(fil):
pr = sub.Popen(fil,stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = pr.communicate()
print output
theapp = '''blender
blender-softwaregl'''.split()
print theapp
for u in theapp:
print u
tr = threading.Thread(target=ben, args=(u))
tr.daemon = True
tr.start()
Run Code Online (Sandbox Code Playgroud)
错误是:
['blender', 'blender-softwaregl']
blender
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: ben() takes exactly 1 argument (7 given)
blender-softwaregl
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: ben() takes exactly 1 argument (18 given)
Run Code Online (Sandbox Code Playgroud)
这是我的问题.这个错误是什么?
TypeError: ben() takes exactly 1 argument (18 given)
Run Code Online (Sandbox Code Playgroud)
Blc*_*ght 15
期望序列的args参数threading.Thread,但是你提供了一个字符串.这导致它将字符串的每个字母解释为单个参数,从而导致目标函数的参数太多.
你非常接近拥有正确的代码.您只需要通过在父级中添加一个尾随逗号来修复元组语法:
tr = threading.Thread(target=ben, args=(u,)) # comma makes args into a 1-tuple
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5878 次 |
| 最近记录: |