This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2012年09月10日 09:59 by bred, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Messages (3) | |||
|---|---|---|---|
| msg170171 - (view) | Author: Simon (bred) | Date: 2012年09月10日 09:59 | |
I've simply tested the example reported in the py3k documentation, and it don't works. See the site: http://docs.python.org/py3k/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing.sharedctypes The program exit with this error: > python sha.py Traceback (most recent call last): File "sha.py", line 21, in <module> s = Array('c', 'hello world', lock=lock) File "/usr/lib/python3.2/multiprocessing/sharedctypes.py", line 112, in Array obj = RawArray(typecode_or_type, size_or_initializer) File "/usr/lib/python3.2/multiprocessing/sharedctypes.py", line 89, in RawArray result.__init__(*size_or_initializer) TypeError: one character string expected Observe that the following code works correctly with python2! I'm using python 3.2.3 and gcc 4.7.1 under ArchLinx Te code is: http://docs.python.org/py3k/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing.sharedctypes #################################################################### from multiprocessing import Process, Lock from multiprocessing.sharedctypes import Value, Array from ctypes import Structure, c_double class Point(Structure): _fields_ = [('x', c_double), ('y', c_double)] def modify(n, x, s, A): n.value **= 2 x.value **= 2 s.value = s.value.upper() for a in A: a.x **= 2 a.y **= 2 if __name__ == '__main__': lock = Lock() n = Value('i', 7) x = Value(c_double, 1.0/3.0, lock=False) s = Array('c', 'hello world', lock=lock) A = Array(Point, [(1.875,-6.25), (-5.75,2.0), (2.375,9.5)], lock=lock) p = Process(target=modify, args=(n, x, s, A)) p.start() p.join() print((n.value)) print((x.value)) print((s.value)) print([(a.x, a.y) for a in A]) |
|||
| msg170172 - (view) | Author: Richard Oudkerk (sbt) * (Python committer) | Date: 2012年09月10日 10:18 | |
The documentation needs updating for Python 3 so that a byte string is used. So the line becomes
s = Array('c', b'hello world', lock=lock)
|
|||
| msg170182 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2012年09月10日 12:08 | |
New changeset ddb406904be1 by Richard Oudkerk in branch '3.2': Issue #15901: Change example to use byte string instead of string http://hg.python.org/cpython/rev/ddb406904be1 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:35 | admin | set | github: 60105 |
| 2012年09月10日 12:09:27 | sbt | set | status: open -> closed resolution: fixed stage: resolved |
| 2012年09月10日 12:08:02 | python-dev | set | nosy:
+ python-dev messages: + msg170182 |
| 2012年09月10日 10:31:57 | bred | set | assignee: docs@python type: crash -> behavior components: + Documentation, - ctypes nosy: + docs@python |
| 2012年09月10日 10:18:20 | sbt | set | nosy:
+ sbt messages: + msg170172 |
| 2012年09月10日 09:59:39 | bred | create | |