Мне нравится np.where. Вот решение с ним:
import numpy as np
df.loc[:,'position1'] = np.where((df['switchopen'] == True) & (df['switchclose'] == False), 'open',
np.where((df['switchopen'] == False) & (df['switchclose'] == True), 'closed',
np.where((df['switchopen'] == False) & (df['switchclose'] == False), 'moving',
np.nan)))
Как видите, вы не можете установить NaN ни для одного из условий.
DBI Perl осуществляет однопоточность через свою внутреннюю часть, таким образом, драйверы только будут активны на одной сессии ($dbh
) за один раз. Независимо от того, сколько центральных процессоров Вы имеете. Так, многопоточность не поддерживается (потому что все в DBI является однопоточным), но безопасно использовать DBI (и следовательно DBD:: Oracle) в многопоточном приложении.
Ну, документация DBI говорит для не использования потокового Perl и указывает на сообщение Perlmonks, которое объясняет это. Документация, говоря Вам не сделать это является довольно серьезным основанием.
Однако я видел, что он работает просто великолепно на некоторых платформах, но терплю полный провал на других. Это, конечно, не портативно, даже если Вы действительно заставляете это работать.
Да, использование потоков в Perl является чрезвычайно плохой идеей, независимо от того, используете ли Вы Oracle или нет.
В то время как в теории, предоставленной, каждый использует ее собственное соединение, она должна работать, жемчуг, 5,8 потоков существенно испорчены.
Если Вы понимаете, что статья и все еще хочет использовать потоки Perl, удачу.
Я использовал многопоточность в Perl для тестирования базы данных Oracle, и мне пришлось создать обработчик базы данных для каждого потока.
Некоторое время назад мне удалось заставить работать специальную реализацию ... Я рассматривал соединение с dbi как ограниченный ресурс и поделился им между различными потоками в Perl, используя механизм блокировки файлов. Мое многопоточное приложение когда-либо подключается к dbi только через отдельный perl-скрипт, работающий как демон.
В Linux многопоточность выполнялась с помощью fork, в Windows я использовал все, что поставлялось с реализацией activeperl по умолчанию (я забыл)
Я пытался заставить их общаться через общую память, но в итоге просто использовал общий файл вместо . В Linux есть надежный режим добавления, так что это было несложно. В Windows было намного сложнее синхронизировать их.
Недавно я изучил транзакции базы данных, где каждый экземпляр потока имел собственное соединение с базой данных, и позволяя базе данных обрабатывать детали соединения.
Это с mysql, но я уверен, что Oracle поддерживает транзакции.
apache :: dbi хорошо работает / работает с mod_perl, поддерживая эти соединения активными между каждым прогоном скрипта (до того, как я использовал это, каждое соединение занимало довольно много времени).
Ваши результаты будут разными.