Python的多进程管道无法工作

3
我有以下非常简短的代码段:

我有以下非常简短的代码段:

from multiprocessing import Pipe
End1, End2 = Pipe ()

该操作导致了以下错误:
Traceback (most recent call last):
File "/storage/sdcard0/MyMovie/.run/.last_tmp.py", line 3, in <module>
End1, End2 = Pipe ()
File "/storage/sdcard0/com.hipipal.qpyplus/lib/python3.2/site-packages/multiprocessing/__init__.py", line 106, in Pipe
return Pipe(duplex)
File "/storage/sdcard0/com.hipipal.qpyplus/lib/python3.2/site-packages/multiprocessing/connection.py", line 188, in Pipe
s1, s2 = socket.socketpair()
File "/storage/sdcard0/com.hipipal.qpyplus/lib/python3.2/site-packages/socket.py", line 225, in socketpair
a, b = _socket.socketpair(family, type, proto)
socket.error: [Errno 95] Operation not supported on transport endpoint

我谷歌搜索了最后一个错误,但没有找到有用的信息。我在文档中发现它被使用时就是这样,所以考虑到只有两行代码,我不认为问题出在我的代码上。这可能是一个“内部问题”吗? 我正在使用Python 3.2的Android版Python3解释器。
谢谢。

我曾认为错误可能是因为我用“清理/关闭”管道来结束程序,但事实并非如此。只要我尝试构建该管道,它就会崩溃。 - Carcigenicate
1个回答

1

硬件是否支持多处理器?我不确定,但这可能是问题所在。


多线程支持是否等同于多进程支持?我尝试了使用队列,所以我认为它可以工作,但回想起来,我觉得那些是多线程队列。我知道多线程可以工作,但我从未测试过多进程。有没有可靠的方法来测试兼容性?我不知道在Android系统上该去哪里查看。我从未听说过它是明确不兼容的。 - Carcigenicate
我尝试使用多进程队列,但出现了错误“Errno 38: Function not implemented”,这个错误信息比其他错误信息更详细。我觉得你可能是对的(不幸的是)。 - Carcigenicate
信号量不是最基本的锁吗?它只是一个被增加/减少的值,当其值为0时解锁,这不是很简单吗?安卓怎么可能没有这个,但有其他锁呢?这似乎很奇怪。 - Carcigenicate
谢谢您的关注。自那以后,我已经转而寻找其他解决方案,发现Twisted与我的表格处理器不兼容,而pyserial不喜欢我的2to3版本 -_- - Carcigenicate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接