импорт внутри потока Python

Трюк передает исходный и целевой массивы по ссылке.

function flatten_array(&$arr, &$dst) {
    if(!isset($dst) || !is_array($dst)) {
        $dst = array();
    }
    if(!is_array($arr)) {
        $dst[] = $arr;
    } else {
        foreach($arr as &$subject) {
            flatten_array($subject, $dst);
        }
    }
}

$recursive = array('1', array('2','3',array('4',array('5','6')),'7',array(array(array('8'),'9'),'10')));
echo "Recursive: \r\n";
print_r($recursive);
$flat = null;
flatten_array($recursive, $flat);

echo "Flat: \r\n";
print_r($flat);

// If you change line 3 to $dst[] = &$arr; , you won't waste memory,
// since all you're doing is copying references, and imploding the array 
// into a string will be both memory efficient and fast:)

echo "String:\r\n";
echo implode(',',$flat);
14
задан CharlesB 25 February 2013 в 15:30
поделиться

1 ответ

Я не мог найти ответ в официальной документации относительно этого, но кажется, что в некоторых версиях CPython 3.x, __import__ вызовы не ориентированы на многопотоковое исполнение, и могут вызвать мертвую блокировку. См.: https://bugs.python.org/issue38884.

0
ответ дан 1 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

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