python IOerror:[Errno 22]来自threading.thread的参数无效

时间:2014-10-19 22:01:34

标签: python multithreading

我尝试向sysfs表单写一个threading.thread

没有线程就可以了:

f = open('/sys/class/pwm/pwmchip0/pwm0/duty_cycle', 'w')
f.write(str(100))
f.close()

但如果我把它放在一个帖子中:

import threading

class Thread(threading.Thread):
   def __init__(self):
      threading.Thread.__init__(self)

   def run(self):
       while True:
          f = open('/sys/class/pwm/pwmchip0/pwm0/duty_cycle', 'w')
          f.write(str(100))
          f.close()
          time.sleep(1)

 t = Thread()
 t.start()

导致:

Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/home/steve/test.py", line 10, in run
    f.close()

IOError:[Errno 22]参数无效

如果在f.close()之前添加了f.flush(),则在f.flush()中发生相同的错误。 因为看起来线程与主线程没有相同的sysfs权限。 即使在写入块周围添加锁定也不会阻止它。 为什么会这样呢?我该如何解决这个问题呢?

0 个答案:

没有答案