Urinx / WeixinBot

网页版微信API,包含终端版微信及微信机器人
Apache License 2.0
7.21k stars 1.98k forks source link

运行出现错误,请问是怎么回事? #76

Open fjfzzl opened 8 years ago

fjfzzl commented 8 years ago

运行程序后,一开始都正常,到了后面就出现错误了,如下:

...........(前面很多正常提示就省去了) 2016-08-11 11:25:43 light root[896] DEBUG [_] 自动回复模式 ... 关闭 Traceback (most recent call last): File "D:/zl/python/WeixinBot-master/weixin.py", line 1084, in Traceback (most recent call last): File "", line 1, in File "C:\Anaconda2\lib\multiprocessing\forking.py", line 381, in main self = load(from_parent) File "C:\Anaconda2\lib\pickle.py", line 1384, in load webwx.start() File "D:/zl/python/WeixinBot-master/weixin.py", line 30, in wrapper return fn(_args) File "D:/zl/python/WeixinBot-master/weixin.py", line 920, in start listenProcess.start() File "C:\Anaconda2\lib\multiprocessing\process.py", line 130, in start return Unpickler(file).load() File "C:\Anaconda2\lib\pickle.py", line 864, in load self._popen = Popen(self) File "C:\Anaconda2\lib\multiprocessing\forking.py", line 277, in init dump(process_obj, to_child, HIGHEST_PROTOCOL) File "C:\Anaconda2\lib\multiprocessing\forking.py", line 199, in dump ForkingPickler(file, protocol).dump(obj) File "C:\Anaconda2\lib\pickle.py", line 224, in dump self.save(obj) File "C:\Anaconda2\lib\pickle.py", line 331, in save dispatchkey File "C:\Anaconda2\lib\pickle.py", line 886, in load_eof self.save_reduce(obj=obj, rv) File "C:\Anaconda2\lib\pickle.py", line 425, in save_reduce save(state) File "C:\Anaconda2\lib\pickle.py", line 286, in save raise EOFError EOFError f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 655, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Anaconda2\lib\pickle.py", line 687, in _batch_setitems save(v) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher self.save_reduce(obj=obj, rv) File "C:\Anaconda2\lib\pickle.py", line 401, in save_reduce save(args) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 554, in save_tuple save(element) File "C:\Anaconda2\lib\pickle.py", line 331, in save self.save_reduce(obj=obj, rv) File "C:\Anaconda2\lib\pickle.py", line 425, in save_reduce save(state) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 655, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Anaconda2\lib\pickle.py", line 687, in _batch_setitems save(v) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 731, in save_inst save(stuff) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 655, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Anaconda2\lib\pickle.py", line 687, in _batch_setitems save(v) File "C:\Anaconda2\lib\pickle.py", line 331, in save self.save_reduce(obj=obj, rv) File "C:\Anaconda2\lib\pickle.py", line 425, in save_reduce save(state) File "C:\Anaconda2\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Anaconda2\lib\pickle.py", line 655, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Anaconda2\lib\pickle.py", line 687, in _batch_setitems save(v) File "C:\Anaconda2\lib\pickle.py", line 306, in save rv = reduce(self.proto) TypeError: can't pickle thread.lock objects

Process finished with exit code 1

请问是哪里出错了呢?

ilaop commented 8 years ago

我也是遇到这个问题

whyas commented 8 years ago

我也是遇见这个问题

lvusyy commented 8 years ago

我也是

tianjiantnt2 commented 8 years ago

我也是遇见这个问题

oneTaken commented 8 years ago

我也是遇到这个问题,不知从哪里改起

xiaobai-little commented 7 years ago

同样。。。

fwang1986 commented 7 years ago

同样遇到这个问题。。。

xiaobai-little commented 7 years ago

解决问题了。用threading代替multiprocessing 把这几行替换掉

listenProcess = multiprocessing.Process(target=self.listenMsgMode)

listenProcess.start()

import threading listenProcess = threading.Thread(target=self.listenMsgMode) listenProcess.start() listenProcess.join()

listenProcess.join() 这个可以注释掉