Аргументы строки в многопроцессорной обработке Python

Путем C++ реализован, просто заставляет программирование OO много походить на процедурное программирование. Необходимо сместить взгляды немного.

В объектах C++ имеют методы, которые являются просто процедурами, которые действуют на объект. Но в реальном парадиаметре OO необходимо думать о методах как о потенциальных сообщениях, что объект может получить (т.е. буквы). Объект получает сообщение (параметры представляют полезную нагрузку сообщения т.е. содержание буквы), и изменяет ее состояние на основе сообщения.

34
задан abalter 13 October 2009 в 09:27
поделиться

3 ответа

Это обычная проблема в Python - если вы хотите иметь кортеж только с одним элементом, вам нужно указать, что это на самом деле кортеж (а не просто что-то с скобками вокруг него) - это делается путем добавления запятой после элемента.

Чтобы исправить это, просто поставьте запятую после строки внутри скобок:

p = multiprocessing.Process(target=write, args=('hello',))

Таким образом, Python распознает его как кортеж с одним элементом, как и предполагалось . В настоящее время Python интерпретирует ваш код как просто строку. Однако именно таким образом он не работает, потому что строка фактически представляет собой список символов. Итак, Python думает, что вы хотите передать ('h', 'e', ​​'l', 'l', 'o'). Вот почему говорится: «Вы дали мне 5 параметров».

84
ответ дан 27 November 2019 в 16:08
поделиться

Измените args = ('hello') на args = ('hello',) или даже лучше args = ['hello '] . В противном случае скобки не образуют последовательность.

10
ответ дан 27 November 2019 в 16:08
поделиться

Вы должны передать

p = multiprocessing.Process(target=write, args=('hello',))

Обратите внимание на запятую! В противном случае он интерпретируется как простая строка, а не как кортеж из 1 элемента.

6
ответ дан 27 November 2019 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: