Я могу использовать многопоточность с DBI Perl и Oracle?

Мне нравится 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 ни для одного из условий.

6
задан brian d foy 25 September 2010 в 18:03
поделиться

5 ответов

DBI Perl осуществляет однопоточность через свою внутреннюю часть, таким образом, драйверы только будут активны на одной сессии ($dbh) за один раз. Независимо от того, сколько центральных процессоров Вы имеете. Так, многопоточность не поддерживается (потому что все в DBI является однопоточным), но безопасно использовать DBI (и следовательно DBD:: Oracle) в многопоточном приложении.

5
ответ дан 10 December 2019 в 02:55
поделиться

Ну, документация DBI говорит для не использования потокового Perl и указывает на сообщение Perlmonks, которое объясняет это. Документация, говоря Вам не сделать это является довольно серьезным основанием.

Однако я видел, что он работает просто великолепно на некоторых платформах, но терплю полный провал на других. Это, конечно, не портативно, даже если Вы действительно заставляете это работать.

2
ответ дан 10 December 2019 в 02:55
поделиться

Да, использование потоков в Perl является чрезвычайно плохой идеей, независимо от того, используете ли Вы Oracle или нет.

В то время как в теории, предоставленной, каждый использует ее собственное соединение, она должна работать, жемчуг, 5,8 потоков существенно испорчены.

Если Вы понимаете, что статья и все еще хочет использовать потоки Perl, удачу.

0
ответ дан 10 December 2019 в 02:55
поделиться

Я использовал многопоточность в Perl для тестирования базы данных Oracle, и мне пришлось создать обработчик базы данных для каждого потока.

1
ответ дан 10 December 2019 в 02:55
поделиться

Некоторое время назад мне удалось заставить работать специальную реализацию ... Я рассматривал соединение с dbi как ограниченный ресурс и поделился им между различными потоками в Perl, используя механизм блокировки файлов. Мое многопоточное приложение когда-либо подключается к dbi только через отдельный perl-скрипт, работающий как демон.

В Linux многопоточность выполнялась с помощью fork, в Windows я использовал все, что поставлялось с реализацией activeperl по умолчанию (я забыл)

Я пытался заставить их общаться через общую память, но в итоге просто использовал общий файл вместо . В Linux есть надежный режим добавления, так что это было несложно. В Windows было намного сложнее синхронизировать их.

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

Это с mysql, но я уверен, что Oracle поддерживает транзакции.

apache :: dbi хорошо работает / работает с mod_perl, поддерживая эти соединения активными между каждым прогоном скрипта (до того, как я использовал это, каждое соединение занимало довольно много времени).

Ваши результаты будут разными.

1
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

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